Django 在InlineAdmin中显示M2M链接模型的选定字段
在django应用程序中,我有一个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
家用
模型,有一个儿童
许多外键指向儿童
模型。在管理中,我以内联方式显示链接的
子实例,如下所示:
我工作得很好,但显示了一个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