Django Formset Posting, но набор форм никогда не является действительным
Я создал набор форм на основе modelformset_factory и существующей формы в моем представлении и передал ему набор объектов для редактирования. Они правильно отображаются в представлении, но всякий раз, когда я пытаюсь подтвердить редактирование, оно не сохраняется. Распечатав утверждение (print(formset.is_valid()), я вижу, что именно это останавливает сохранение набора форм.
Как правильно передать существующий queryset в formset для редактирования?
Forms.py
class RSVPForm(forms.ModelForm):
class Meta:
model = Invite
fields = ['guest_name', 'plus_one', 'dietry_requirements', 'rsvp_attendance']
Views.py
def view_rsvp_create(request, event_id, guest_id):
event = get_object_or_404(Event, id=event_id)
guest = get_object_or_404(Guest, id=guest_id)
invites = Invite.objects.filter(event=event, guest=guest)
RSVPFormset = modelformset_factory(Invite, form=RSVPForm, extra=0)
formset = RSVPFormset(queryset=invites)
if request.method == 'POST':
if formset.is_valid():
print('okey')
formset.save()
return redirect('view_rsvp_overview', name = guest.wedding.subdomain, code = guest.code)
data = {'formset': formset, 'guest': guest, 'wedding': event.wedding, 'invites':invites}
template='experience/rsvp-create.html'
return render(request, template, data)
update.html
...
<form method="post">
{% csrf_token %} {{ formset | crispy }}
<button type="submit" class="btn">{% trans "Confirm RSVP" %}</button>
</form>
...
Я смог решить свою проблему, изменив оператор if на if request.method == 'POST':
на следующее:
formset = RSVPFormset(request.POST or None, queryset=invites)