django admin 的 编辑、新增 页面, ForeignKey, OneToOneField 这些个字段, 默认会用下拉框的方式加载数据, 如果 关联的字段 数据量非常大
就会导致 编辑、新增页面非常卡顿, 这是因为 他们会加载所有 下拉框内容
在 admin里, 用 autocomplete_fields
来声明这个字段, 如下:
# 假设name字段 通过 ForeignKey, OneToOneField 关联到了另外一张非常大的表
# xxx/models.py
class XXXDetail(models.Model):
name = models.OneToOneField(
Myname, on_delete=models.CASCADE, primary_key=True, related_name="details"
)
# name = models.ForeignKey(Myname, on_delete=models.CASCADE, related_name="signatures")
fetched_at = models.DateTimeField(auto_now_add=True)
# xxx/admin.py
@admin.register(XXXDetail)
class XXXDetailAdmin(admin.ModelAdmin):
autocomplete_fields = ("name",)
list_display = ("id", "name", "fetched_at" )
这样 字段name 就是不是 下拉框了, 而是一个 需要输入关键词 来触发的 自动完成输入框, 新增的时候,他默认不会加载数据,输入关键词后,只会加载有限的 相关的数据,编辑的时候,他也只会加载相关的数据