Форум сайта python.su
Всем спасибо за помощь.
Я не могу понять, почему форма не проходит проверку на валидность.
class HousePhotoAddForm (forms.Form): photo = forms.FileField()
class HousePhoto(models.Model): house = models.ForeignKey(House, related_name='HousePhotoToHouse', unique=False, verbose_name=u'Объявление') photo = models.ImageField(upload_to='photo', blank=False, null=False)
if request.method == 'POST': data_dict = request.POST.dict() HousePhotoAddFormSet = formset_factory(HousePhotoAddForm, extra=data_dict['form-TOTAL_FORMS'], max_num=data_dict['form-TOTAL_FORMS']) formset = HousePhotoAddFormSet(request.POST, request.FILES) if formset.is_valid(): try: house = House.objects.get(code=id) except House.DoesNotExist: return HttpResponseRedirect("/add/2/%s/" %(id)) for form in formset: check = HousePhotoAddForm() if check.is_valid(): photo = HousePhoto(house=house, **form.cleaned_data) photo.save() return HttpResponseRedirect("/add/3/%s/" %(id))
'cleaned_data': {'photo': <InMemoryUploadedFile: 2ВАРИАНТ.jpg (image/jpeg)>}
Офлайн
check = HousePhotoAddForm() if check.is_valid():
Офлайн
Не нужно форму создавать. Одна форма берётся из формсета, уже заполненная.
вместо этого: for form in formset: check = HousePhotoAddForm() if check.is_valid(): photo = HousePhoto(house=house, **form.cleaned_data) photo.save() пиши так: for form in formset: if form.is_valid(): form.save()
Отредактировано buddha (Янв. 31, 2013 12:19:23)
Офлайн
Спасибо, буду читать.
Офлайн