【问题标题】:Getting a 'modelformset_factory without defining 'fields' error' using Django inline formset. What am I doing wrong?使用 Django 内联表单集获取“modelformset_factory”而不定义“字段”错误。我究竟做错了什么?
【发布时间】:2016-03-29 13:39:01
【问题描述】:

我的 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)

我正在尝试在成员表单中为家庭成员创建一个内联表单。为此,我使用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)

当我运行服务器时,我收到以下错误:

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

我做错了什么?

【问题讨论】:

    标签: python django django-forms


    【解决方案1】:

    你在这里:

    FamilyMemberFormSet = inlineformset_factory(Member, FamilyMember, fields =['name', 'occupation',])
    

    【讨论】:

    • 感谢您提供此代码 sn-p,它可能会提供一些有限的即时帮助。 proper explanation would greatly improve its long-term value 通过展示为什么这是一个很好的解决问题的方法,并将使其对未来有其他类似问题的读者更有用。请edit您的回答添加一些解释,包括您所做的假设。
    【解决方案2】:

    我不确定,但我认为您忘记将表格传递给inlineformset_factory

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

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

    请参阅Django doc about inlineformset_factory 中的一些示例。

    【讨论】:

    • 好的,我添加了参数。但是现在我收到了这个错误:raise FieldError(message) django.core.exceptions.FieldError: Unknown field(s) (name,occupation, huge list of my data-fields.....) specified for FamilyMember
    • NVM,我想我有问题。
    • 是不是因为你的表单应该是FamilyMember而不是Member
    • 只需定义字段即可解决问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-15
    • 1970-01-01
    • 2013-08-06
    • 1970-01-01
    • 1970-01-01
    • 2016-07-18
    • 2011-08-07
    相关资源
    最近更新 更多