Найти - Пользователи
Полная версия: formset сохранение данных
Начало » Django » formset сохранение данных
1 2
SorrowFuck
Всем спасибо за помощь.

Я не могу понять, почему форма не проходит проверку на валидность.
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)>}
Все же валидно вроде?
inoks
                    check = HousePhotoAddForm()
                    if check.is_valid():

ты проверяешь пустую форму, почему она должна быть валидна?
buddha
Не нужно форму создавать. Одна форма берётся из формсета, уже заполненная.
вместо этого:
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()

Вообще конечно, иди читай документацию, она все эти вопросы снимет с первого раза, там всё это есть.
SorrowFuck
Спасибо, буду читать.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB