Django: Как перебирать наборы форм и получать доступ к очищенным данным? - PullRequest
4 голосов
/ 09 марта 2010

Что если я захочу что-то сделать с моим набором форм другим , чем немедленно сохранить его?

Как я могу это сделать?

        for form in vehicles_formset.forms:
            listing.id = None
            listing.vehicle_year = form.cleaned_data['year']
            listing.vehicle_make = form.cleaned_data['make']
            listing.vehicle_model = form.cleaned_data['model']
            listing.vin = form.cleaned_data['vin']
            listing.vehicle_runs = form.cleaned_data['runs']
            listing.vehicle_convertible = form.cleaned_data['convertible']
            listing.vehicle_modified = form.cleaned_data['modified']
            listing.save()

(Таким образом, создается несколько списков) Видимо cleaned_data не существует. В диктовке data есть куча вещей вроде form-0-year, но для меня это довольно бесполезно.

Ответы [ 2 ]

3 голосов
/ 09 марта 2010

Вы звонили vehicles_formset.is_valid() до вашего фрагмента выше?

Кроме того, использование ModelForm в вашем наборе форм позволит вам получить экземпляр списка из формы, просто набрав listing = form.save(commit=False)

1 голос
/ 30 августа 2015

Просто для продолжения предыдущего комментария, после вызова formset.is_valid(), вы также можете сделать save(commit=False) непосредственно в наборе форм. Это вернет список экземпляров, которые затем могут быть индивидуально изменены, а затем сохранены:

forms = formset.save(commit=False)
for form in forms:
    form.some_field_name = new_value
    form.save()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...