La façon dont vous stockez les fichiers est indépendante du fait qu'ils proviennent ou non d'AJAX. Votre vue devra toujours traiter les données de formulaire en plusieurs parties et les stocker dans votre système de fichiers de base de données et de serveur, comme tout autre fichier téléchargé dans Django.
En ce qui concerne le modèle, que diriez-vous de quelque chose comme ceci?
class TemporaryFileWrapper(models.Model):
"""
Holds an arbitrary file and notes when it was last accessed
"""
uploaded_file = models.FileField(upload_to="/foo/bar/baz/")
uploading_user = models.ForeignKey(User)
uploaded = models.DateTimeField(blank=True, null=True, auto_now_add=True)
last_accessed = models.DateTimeField(blank=True, null=True,
auto_now_add=False, auto_now=False)
def read_file(record_read=True):
#...some code here to read the uploaded_file
if record_read:
self.last_accessed = datetime.datetime.now()
self.save()
Pour télécharger des fichiers de base de manutention see the official documentation, mais où l'exemple a la méthode handle_uploaded_file(), vous avez besoin du code qui crée un objet TemporaryFileWrapper, quelque chose comme celui-ci, en fonction de vos besoins:
....
form = ProviderSelfEditForm(request.POST, request.FILES) #this is where you bind files and postdata to the form from the HTTP request
if form.is_valid():
temp_file_wrapper = TemporaryFileWrapper()
temp_file_wrapper.uploaded_file =
form.cleaned_data['name_of_file_field_in_your_form']
temp_file_wrapper.uploading_user = request.user #needs an authenticated user
temp_file_wrapper.save()
return HttpResponseRedirect('/success/url/')
qu'est-ce qui ne va pas avec un http://docs.djangoproject.com régulière/fr/dev/ref/models/fields/#filefield ? –
J'ai ajouté une petite mise à jour. – gruszczy