Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 在InlineAdmin中显示M2M链接模型的选定字段_Django_Django Admin_Django Forms_Many To Many - Fatal编程技术网

Django 在InlineAdmin中显示M2M链接模型的选定字段

Django 在InlineAdmin中显示M2M链接模型的选定字段,django,django-admin,django-forms,many-to-many,Django,Django Admin,Django Forms,Many To Many,在django应用程序中,我有一个家用模型,有一个儿童许多外键指向儿童模型。 在管理中,我以内联方式显示链接的子实例,如下所示: 我工作得很好,但显示了一个HTML选择小部件,包含每个家庭的所有孩子(非常长:8000多个项目) 我尝试将此表单添加到FamilyLine: class ChildForm(forms.ModelForm): class Meta: model = Child fields = ('name','school') class

在django应用程序中,我有一个
家用
模型,有一个
儿童
许多外键指向
儿童
模型。
在管理中,我以内联方式显示链接的
实例,如下所示:

我工作得很好,但显示了一个HTML选择小部件,包含每个家庭的所有孩子(非常长:8000多个项目)

我尝试将此表单添加到FamilyLine:

class ChildForm(forms.ModelForm):
    class Meta:
        model = Child
        fields = ('name','school')

class FamilyInline(admin.TabularInline):
    form = ChildForm
    model = HouseHold.children.through
但这带来了一个错误:

FieldError at /admin/myapp/household/820126/
Unknown field(s) (name, school) specified for HouseHold_children
我只是想为每个孩子的编辑行显示一些字段(名字、姓氏、学校…),而不是这个选择小部件。可能吗

更新:不适用,这是一个错误,表示孩子与家庭没有关系(这在某种程度上是正确的,但它有相反的关系)

这是M2M的基本功能。内联线使用内联对象与正在编辑的父对象直接相关的原理。多对多关系不符合条件,因为子级与父级不直接相关,而是与本身与父级相关的中间表相关。这就是为什么您可以通过
而不仅仅是
Child
使用
house.children.to
。实际上,
家庭、儿童之间存在关系。通过
家庭
,而不是
儿童
家庭

不过,出于您的目的,您可以通过首先正确地设计模型来实现您想要的。家庭和儿童不是M2M关系。一个家庭有许多孩子,但一个孩子只有一个家庭。这意味着家庭应该是孩子的外键,然后你就可以轻松地内联
孩子了。

这是M2M的基本功能。内联线使用内联对象与正在编辑的父对象直接相关的原理。多对多关系不符合条件,因为子级与父级不直接相关,而是与本身与父级相关的中间表相关。这就是为什么您可以通过
而不仅仅是
Child
使用
house.children.to
。实际上,
家庭、儿童之间存在关系。通过
家庭
,而不是
儿童
家庭


不过,出于您的目的,您可以通过首先正确地设计模型来实现您想要的。家庭和儿童不是M2M关系。一个家庭有许多孩子,但一个孩子只有一个家庭。这意味着家庭应该是孩子的外键,然后你就可以轻松地内联
孩子了。

谢谢Chris,你是对的。我真的很希望找到解决方案,因为我有另一个M2M案例,涉及其他领域……但如果孩子的父母离婚,孩子与父母都生活在一起,hense两个或更多家庭,hense M2M?谢谢Chris,你是对的。我真的希望有一个解决方案,因为我有另一个M2M案例,涉及其他领域……但是,如果孩子的父母离异,孩子与他们一起生活,hense两个或更多家庭,hense M2M呢?
FieldError at /admin/myapp/household/820126/
Unknown field(s) (name, school) specified for HouseHold_children