Python 父模型一对多中子模型的显示列表

Python 父模型一对多中子模型的显示列表,python,django,foreign-key-relationship,displaylist,Python,Django,Foreign Key Relationship,Displaylist,我正在学习django管理,我必须在模型之间建立一对多的关系。 我得到了一些类似于制造商模型的东西,我可以在其中添加不同的汽车制造商,以及用于添加汽车的汽车模型。在我的django管理页面中,当我点击manufacturer1条目时,我希望能够显示所有由manufacturer1制造的汽车的列表 我发现了一个在制造商管理模型中使用内联模型的技巧,问题是它加载数据库中的每个条目,这需要一些时间,因为它是一个大表 有没有其他方法可以做到这一点,或者我必须创建一个新的模板 编辑: 我们的目标不是像In

我正在学习django管理,我必须在模型之间建立一对多的关系。 我得到了一些类似于制造商模型的东西,我可以在其中添加不同的汽车制造商,以及用于添加汽车的汽车模型。在我的django管理页面中,当我点击manufacturer1条目时,我希望能够显示所有由manufacturer1制造的汽车的列表

我发现了一个在制造商管理模型中使用内联模型的技巧,问题是它加载数据库中的每个条目,这需要一些时间,因为它是一个大表

有没有其他方法可以做到这一点,或者我必须创建一个新的模板

编辑:
我们的目标不是像InlineModelAdmin那样将每一辆汽车装载到制造商1,而是获得与display_list相同的显示,结果分为多个页面

您不需要任何破解。当您选择Manufacturer1时,Django admin仅显示具有FK to Manufacturer1的车辆,只要您使用了正确的且符合预期。

您不需要任何破解。当您选择Manufacturer1时,Django admin仅显示具有FK to Manufacturer1的车辆,只要您使用了正确的且符合预期。

回答您更新的问题:

方法是使用并覆盖
ModelAdmin.queryset

您可以通过
FordCar
GMCar
扩展
Car
模型,并在
Meta
类中使用
proxy=True

然后,您可以为
FordCar
GMCar
中的每一个注册单独的管理员,并覆盖这些ModelAdmin中的queryset方法以筛选相应的制造商

例:


回答您的最新问题:

方法是使用并覆盖
ModelAdmin.queryset

您可以通过
FordCar
GMCar
扩展
Car
模型,并在
Meta
类中使用
proxy=True

然后,您可以为
FordCar
GMCar
中的每一个注册单独的管理员,并覆盖这些ModelAdmin中的queryset方法以筛选相应的制造商

例:

你有两个选择

最简单的方法是反向看待这种关系。而不是去一个制造商改变形式,看到他们所有的汽车。转到cars变更列表并按制造商筛选。您必须在car
ModelAdmin
上设置
list\u filter
属性以包括制造商

选项二将是一个巨大的痛苦,但您可以覆盖制造商
ModelAdmin
上的
change\u view
,将该制造商的汽车列表添加到
额外上下文中。然后,您必须覆盖“templates/admin/yourapp/manufacturer/change_form.html”中的管理模板。然后,您可以添加到该模板中,使用传递到
extra\u context
中的汽车列表生成所需的列表,并从“django/contrib/admin/templates/change\u list.html”中获得灵感

仔细阅读这本书。实际上那里有大量的信息。

你有两个选择

最简单的方法是反向看待这种关系。而不是去一个制造商改变形式,看到他们所有的汽车。转到cars变更列表并按制造商筛选。您必须在car
ModelAdmin
上设置
list\u filter
属性以包括制造商

选项二将是一个巨大的痛苦,但您可以覆盖制造商
ModelAdmin
上的
change\u view
,将该制造商的汽车列表添加到
额外上下文中。然后,您必须覆盖“templates/admin/yourapp/manufacturer/change_form.html”中的管理模板。然后,您可以添加到该模板中,使用传递到
extra\u context
中的汽车列表生成所需的列表,并从“django/contrib/admin/templates/change\u list.html”中获得灵感


仔细阅读这本书。实际上,这里有大量的信息。

是的,你说得对,但在InlineModelAdmin中,它会加载所有已交付Fk的汽车1,但是显示列表会将它们拆分为多个页面,这对于大型客户来说非常方便是的,你是对的,但在InlineModelAdmin中,它会将所有具有Fk的汽车加载到制造商1,但是显示列表会将它们拆分为多个页面,这对于大型Entries非常方便。我喜欢列表过滤器的想法!我喜欢列表过滤的想法!Thanx对于您的示例,我不知道代理模型,但是如果我必须创建每个品牌的ModelAdmin,我将无法动态创建新制造商。Thanx对于您的示例,我不知道代理模型,但是如果我必须创建每个品牌的ModelAdmin,我将无法动态创建新制造商。
class FordCarAdmin(admin.ModelAdmin)
    list_display = fields = ['name','model','engine']

    def queryset(self,request):
        qs = super(MyModelAdmin, self).queryset(request)
        return qs.filter(manufacturer__name='Ford')

admin.site.register(FordCar,FordCarAdmin)