Django Admin Cookbook-35如何使用带有大量对象的FK管理模型

35.如何使用带有大量对象的FK管理模型?

你可以通过如下代码创建大量Category对象:

categories = [Category(**{"name": "cat-{}".format(i)}) for i in range(100000)]
Category.objects.bulk_create(categories)

现在,Category拥有超过100000个对象,当您进入Hero修改页面是时,类别字段将是一个包含100000个选择下拉列表。这将使页面变慢并且下拉菜单难以使用。

你可以通过设置raw_id_fields,来更改后台对字段的处理方式:

@admin.register(Hero)
class HeroAdmin(admin.ModelAdmin, ExportCsvMixin):
    ...
    raw_id_fields = ["category"]

这会将Hero管理页面更改为更改为:

添加类别弹出窗口,显示如下。

返回目录

原文地址:https://www.cnblogs.com/superhin/p/12192277.html