загрузите файл в django admin без модели и избавьтесь от InMemoryUploadedFile [решено]

#django #django-admin #django-file-upload

Вопрос:

Я хочу загрузить CSV-файл в администраторе, который добавляет информацию в модель. В случае, если вы можете жить с нормальной формой, а не с расширением change_form.html и не перезаписью response_change (я попробовал этот кулак), вот как это можно сделать:

 from django.core.files.storage import default_storage from django.core.files.base import ContentFile  class StoreAdminForm(forms.ModelForm):  ## add an extra field:  upfile = forms.FileField()   class Meta:  model = Store  fields = "__all__"    def clean(self):  cleaned_data = super(StoreAdminForm, self).clean()   if "upfile" in self.changed_data:  ### file validation on file type etc here ..  ## file is valid:  ## next lines deal with the InMemoryUploadedFile Type  path = settings.MEDIA_ROOT.joinpath("___tmp___")  tmp = default_storage.save(path, ContentFile(cleaned_data["upfile"].read()))    ## open file  with open(tmp_file, encoding = "utf8") as f:  data = f.readlines()  ## ...  

Я надеюсь, что это поможет всем, я потерял некоторое время, не зная, как обращаться с InMemoryUploadedFile типами.

Комментарии:

1. попробуйте запросить. ФАЙЛЫ[«uploadCSV»]

2. это именно моя проблема, request.FILES она пуста.

3. можете ли вы переместить тег «принять» в первый входной тег

4. Я попробовал это, но не смог решить свою проблему. Я сам опубликую решение позже. Спасибо за вашу поддержку. Я сделал обходной путь.