#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. Я попробовал это, но не смог решить свою проблему. Я сам опубликую решение позже. Спасибо за вашу поддержку. Я сделал обходной путь.