使用Django表单创建内联formset时出现这个奇怪的错误.我究竟做错了什么?

dar*_*rse 5 python django django-forms

我的models.py看起来像这样:

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)
Run Code Online (Sandbox Code Playgroud)

现在,我正在尝试为成员表单中的家庭成员创建内联表单.为此,我使用inlineformset_factory:

来自django的导入表单来自myapp.models import*来自django.forms.models import 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)
Run Code Online (Sandbox Code Playgroud)

当我运行服务器时,我得到一个奇怪的错误:

"Calling modelformset_factory without defining 'fields' or "
django.core.exceptions.ImproperlyConfigured: Calling >modelformset_factory without defining 'fields' or 'exclude' explicitly is prohibited.
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?谢谢.

Sha*_*ang 14

我不确定,但我认为你忘记将表单传递给inlineformset_factory:

FamilyMemberFormSet = inlineformset_factory(Member, FamilyMember, form=MemberForm)
Run Code Online (Sandbox Code Playgroud)

或者您应该使用fields参数或指定应包含/排除哪些字段exclude.

请参阅Django doc中有关inlineformset_factory的一些示例.


小智 5

给你:

FamilyMemberFormSet = inlineformset_factory(Member, FamilyMember, fields =['name', 'occupation',])
Run Code Online (Sandbox Code Playgroud)

  • 感谢您提供此代码片段,它可能会提供一些有限的即时帮助。[正确的解释将极大地提高其长期价值](//meta.stackexchange.com/q/114762/350567),通过展示*为什么*这是解决问题的一个很好的解决方案,并将使其对未来更有用有其他类似问题的读者。请[编辑]您的答案以添加一些解释,包括您所做的假设。 (2认同)