Django upload de plusieurs fichiers
Bonjour,
Je souhaite pouvoir insérer plusieurs fichiers dans un répertoire à partir d'un formulaire et sauvegarder les nom dans la bdd.
Voici mon code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
models.py
class Depart(models.Model):
num_enreg = models.PositiveIntegerField(blank=True)
date_emission = models.DateField(blank=True)
types = models.CharField(max_length=5, blank=True)
destinataire = models.CharField(max_length=50, blank=True)
objet = models.CharField(max_length=100, blank=True)
observation = models.CharField(max_length=100, blank=True)
pj = models.FileField(null=True, upload_to=generate_filename, blank=True)
def __unicode__(self):
return unicode(self.objet)
def generate_filename(instance, filename):
year = datetime.now().year
url = 'Depart/%s/%s' % (year, filename)
print url
return url |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
forms.py
class DepartForm(forms.ModelForm):
pj = forms.FileField(required=False,widget = forms.ClearableFileInput(attrs={'multiple':True}))
class Meta:
model = Depart
fields = '__all__'
def __init__(self, *args, **kwargs):
super(DepartForm, self).__init__(*args, **kwargs)
for field_name, field in self.fields.items():
field.widget.attrs['class'] = 'form-control'
views.py
def depart(request):
if request.method == 'POST':
depart_form = DepartForm(request.POST, request.FILES)
if depart_form.is_valid():
num_enreg = depart_form.cleaned_data['num_enreg']
date_emission = depart_form.cleaned_data['date_emission']
types = depart_form.cleaned_data['types']
destinataire = depart_form.cleaned_data['destinataire']
objet = depart_form.cleaned_data['objet']
observation = depart_form.cleaned_data['observation']
pj = depart_form.cleaned_data['pj']
handle_uploaded_file_depart(request.FILES['pj'],request.FILES['pj'])
depart_form.save()
return HttpResponseRedirect('liste_depart')
else:
depart_form = DepartForm()
return render(request, 'formulaire_depart.html', {'depart_form': depart_form})
def handle_uploaded_file_np_depart(f, filename):
repertoire_maitre = 'xxxxxxxx'
chemin_du_repertoire = 'media/Depart/'
repertoire_maitre = year+'/'
with open(chemin_du_repertoire +'%s/%s' % (repertoire_maitre, filename), 'wb+') as destination:
for chunk in f.chunks():
destination.write(chunk) |
J'ai bien renseigné le champs MEDIA dans le settings.py, seulement je veux pouvoir creer des répertoires dynamiques en fonction du "num_enreg"
Aussi, comme précisé plus haut, je veux pouvoir uploader plusieurs fichiers à partir d'un formulaire et les mettre dans un chemin spécifique, mais aussi sauvegarder les nom dans une bdd
Merci