Способ хранения файлов не зависит от того, поступают ли они через AJAX. Вашему представлению все равно нужно будет обрабатывать данные составной формы и сохранять их в вашей БД и файловой системе сервера, как и любой другой загруженный файл в Django.
Что касается модели, как на счет этого?
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()
Для базовой обработки загрузки файлов см. Официальную документацию , но там, где в примере есть метод handle_uploaded_file (), вам нужен код, который создает объект TemporaryFileWrapper, что-то , например, в зависимости от ваших потребностей:
....
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/')