Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Getting a 'modelformset_factory without defining 'fields' error' using Django inline formset. What am I doing wrong?

My models.py looks like this:

class Member(models.Model):
    name = models.CharField(max_length=255)
    occupation = models.CharField(max_length=255)

class FamilyMember(models.Model):
    name = models.CharField(max_length=255)
    relation = models.CharField(max_length=255)
    member = models.ForeignKey(Member)

I am trying to create an inline form for family members inside the members form. To do that, I am using inlineformset_factory:

from django import forms
from myapp.models import *
from django.forms.models import inlineformset_factory

class MemberForm(forms.ModelForm):
    class Meta:
        model = Member
        fields = [
            'name', 'occupation',
        ]

FamilyMemberFormSet = inlineformset_factory(Member, FamilyMember)

When I run the server, I get the below error:

"Calling modelformset_factory without defining 'fields' or "
django.core.exceptions.ImproperlyConfigured: Calling >modelformset_factory without defining 'fields' or 'exclude' explicitly is prohibited.

What am I doing wrong?

like image 926
darkhorse Avatar asked Mar 29 '16 13:03

darkhorse


2 Answers

I'm not sure but I think you forgot to pass the form to inlineformset_factory:

FamilyMemberFormSet = inlineformset_factory(Member, FamilyMember, form=MemberForm)

Or you should specify what fields should be included/excluded using either fields parameter or exclude.

See some examples in Django doc about inlineformset_factory.

like image 185
Shang Wang Avatar answered Nov 20 '22 19:11

Shang Wang


here you are:

FamilyMemberFormSet = inlineformset_factory(Member, FamilyMember, fields =['name', 'occupation',])
like image 24
mohamed hajjaj Avatar answered Nov 20 '22 19:11

mohamed hajjaj