/ / Ako môžem spracovať viac súborov z poľa pre súbory v Django? - django, django-forms, filefield

Ako môžem spracovať viacero súborov zo súboru v poli django? - django, djangoforms, filefield

Snažím sa prísť na to, ako spracovať viacsúbory zo súborového poľa v Django. Prišiel som na to, ako do poľa formulára pridať atribút „viac“. To, čo teraz musím urobiť, je prehľadať každý súbor a vykonať určitú logiku.

Mám formulár s takýmito poľami (v views.py):

class RecipientListForm(forms.Form):
name = forms.CharField()
recipients = forms.CharField(
required=False,
widget=forms.Textarea(attrs={"placeholder":"James Jameson, james.jameson@aol.com"}),
label="Paste recipient information (comma-separated, in "name, email" format)")

recipients_file = RecipientsFileField(
required=False,
widget=forms.FileInput(attrs={"multiple":"true"}),
label="Or upload a .csv file in "name, email" format (max size %dMB)" % RecipientsFileField.MAX_FILESIZE_MB)

def __init__(self, account, recipient_list=None, *args, **kwargs):
super(RecipientListForm, self).__init__(*args, **kwargs)
self.account = account
self.recipient_list = recipient_list

def clean(self, *args, **kwargs):
...

RecipientsFileField vyzerá takto (aj v view.py):

class RecipientsFileField(forms.FileField):
MAX_FILESIZE_MB = 30

def validate(self, value):
super(RecipientsFileField, self).validate(value)
if not value: return

fname = value.name

if (value.content_type not in (("text/csv",) + EXCEL_MIMETYPES) or not re.search(r".(xlsx?|csv)$", fname, re.I)):
raise forms.ValidationError("Please upload a .csv or .xlsx file")

if value.size >= self.MAX_FILESIZE_MB * 1024 * 1024:
raise forms.ValidationError("File must be less than %dMB" % (self.MAX_FILESIZE_MB,))

Pokúsil som sa vykonať svoju logiku v clean metóda RecipientListForm ale mal som prístup iba k prvémusúbor, ktorý sa nahrá, sa zdá, že sa ostatné súbory nenahrajú. Pozrel som sa na dokumenty, ale zdá sa, že spôsob nastavenia týchto formulárov sa v dokumentácii o formulároch neodráža, pokiaľ iba nepozerám na nesprávne miesto. Ďakujem vopred!

odpovede:

1 pre odpoveď č. 1

Podľa táto časť dokumentov Django, mali by ste byť schopní získať súbory z objektu požiadavky pomocou:

files = request.FILES.getlist("recipients_file")

Dúfam, že to pomôže.