from django import forms class MultipleFileInput(forms.ClearableFileInput): allow_multiple_selected = True class MultipleFileField(forms.FileField): def __init__(self, *args, **kwargs): kwargs.setdefault("widget", MultipleFileInput()) super().__init__(*args, **kwargs) def clean(self, data, initial=None): single_file_clean = super().clean if isinstance(data, (list, tuple)): result = [single_file_clean(d, initial) for d in data] else: result = [single_file_clean(data, initial)] return result class AdminUpload(forms.Form): def __init__(self,*args,**kwargs): forms.Form.__init__(self,*args,**kwargs) self.fields['allegati'] = MultipleFileField(required=False) # descrizione da applicare a tutti i file caricati self.fields['descrizione'] = forms.CharField(required=False) # il file viene caricato e assegnato a tutti gli utenti a cui si fa riferimento (sede/azienda) self.fields['pertutti'] = forms.BooleanField(required=False) self.fields['comunicazione'] = forms.BooleanField(required=False) # ignora le aziende e cerca i codici fiscali ovunque (sconsigliato per grandi repository) self.fields['ignoraAzienda'] = forms.BooleanField(required=False) # come sopra ma solo all'interno dell'azienda di riferimento self.fields['ignoraSede'] = forms.BooleanField(required=False) self.fields['privato'] = forms.BooleanField(required=False) class DeleteOldDocuments(forms.Form): def __init(self,*args,**kwargs): forms.Form.__init__(self,*args,**kwargs) self.fields['limite'] = forms.CharField(required=True) class formMultipleCheckBox(forms.Form): def __init__(self,*args,lista=[],**kwargs): forms.Form.__init__(self,*args,**kwargs) self.fields['MultipleDocumentSelect'] = forms.MultipleChoiceField(required=False,widget=forms.CheckboxSelectMultiple(),choices=self.c(lista)) def c(self,lista): print(len(lista)) choices = list() for u in lista: choices.append((u.id,u.id),) print('choices',len(choices)) return choices