1

Django version 1.8.7 I'm creating a pages where the user has to add a list of invitees to his weeding so I needed to use the same form many times on the same page to create mnay model instances of the invitees; In order to do that I used model formsets using modelformset_factory function .

So in my forms.py

class InviteesForm(ModelForm):
class Meta:
    model = Invitees
    fields = ['user', 'invitee_name' , 'invitee_address', 'invitee_count', 
   'invitee_email']
    exclude = ('user',)

#creating a formset 
InviteesFormSet = modelformset_factory(Invitees, form = InviteesForm )

Above you can see my model form for the invitees model and my InviteesFormSet which uses modelformser_factory fucntion.

In my views.py

def preview(request):
formset = forms.InviteesFormSet(queryset=Invitees.objects.all())
if request.method == 'POST':
    formset = forms.InviteesFormSet(request.POST)
    if formset.is_valid():
       formset.save(commit = False)   
       return redirect('/invitees/')         
else:
    formset = forms.InviteesFormSet(request.POST)
return render(request, 'preview.html', {'formset': formset} ) 

In my Preview.html

 <form action="/preview/" method='POST'>
    {% csrf_token %}  
    {{ formset.management_form }}
    <button type="submit">Add an Invitee</button>
    </form>

The formset is not rendering in my html, am not sure what I'm doing wrong here, it's basic code! but I get this error

[u'ManagementForm data is missing or has been tampered with']

I tried the solution mentioned here by adding .management_form to the formset on template page : referred here https://docs.djangoproject.com/en/dev/topics/forms/formsets/#understanding-the-managementform

Can you please help me figure out the issue?

Thanks

Rawa
  • 21
  • 3
  • Possible duplicate of [ManagementForm data is missing or has been tampered with](https://stackoverflow.com/questions/25331500/managementform-data-is-missing-or-has-been-tampered-with) – solarissmoke Apr 29 '18 at 05:52
  • No , I have tried the solution offered, and I still get the same error – Rawa Apr 30 '18 at 12:44

1 Answers1

0

from your code

if request.method == 'POST':
    formset = forms.InviteesFormSet(request.POST)
    if formset.is_valid():
       formset.save(commit = False)   
       return redirect('/invitees/')         
else:
    formset = forms.InviteesFormSet(request.POST)

do not use request.POST if it is a GET request just do formset = forms.InviteesFormSet(queryset=Invitees.objects.all()) (you can remove the else clause altogether)

maazza
  • 7,016
  • 15
  • 63
  • 96