Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 31, 2013 08:15:12

SorrowFuck
От: Хабаровск
Зарегистрирован: 2012-10-10
Сообщения: 64
Репутация: +  2  -
Профиль   Отправить e-mail  

formset сохранение данных

Всем спасибо за помощь.

Я не могу понять, почему форма не проходит проверку на валидность.

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)>}
Все же валидно вроде?



_________
Новичок

Офлайн

#2 Янв. 31, 2013 10:25:20

inoks
От: Russia
Зарегистрирован: 2012-12-11
Сообщения: 343
Репутация: +  35  -
Профиль   Адрес электронной почты  

formset сохранение данных

                    check = HousePhotoAddForm()
                    if check.is_valid():

ты проверяешь пустую форму, почему она должна быть валидна?

Офлайн

#3 Янв. 31, 2013 12:18:35

buddha
От:
Зарегистрирован: 2012-03-02
Сообщения: 422
Репутация: +  15  -
Профиль   Отправить e-mail  

formset сохранение данных

Не нужно форму создавать. Одна форма берётся из формсета, уже заполненная.

вместо этого:
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)

Офлайн

#4 Фев. 1, 2013 17:17:27

SorrowFuck
От: Хабаровск
Зарегистрирован: 2012-10-10
Сообщения: 64
Репутация: +  2  -
Профиль   Отправить e-mail  

formset сохранение данных

Спасибо, буду читать.



_________
Новичок

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version