7.如何管理一个有很多外键对象的模型?

你可以创建大量的category,像这样:

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

现在Category超过了100000个对象,当你在Heroadmin页面的时候,你将会有一个超过100000选择的下拉框。这会让页面变得很慢,并且下拉框难于使用。 你可以通过设置raw_id_fields来改变admin的管理方式。

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

修改了之后,Hero的admin页面像这样: 7.如何管理一个有很多外键对象的模型? - 图1

弹出窗口像这样: 7.如何管理一个有很多外键对象的模型? - 图2