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管理页面更改为更改为:
添加类别弹出窗口,显示如下。