Django 表单字段外键
我正在尝试根据文档来过滤我在外键字段中的管理员选项。
我的模型非常简单:
class Page(models.Model):
title = models.CharField(max_length=50, null=False, blank=False, default="Title")
layout = models.ForeignKey(Layout, null=False) #This sets the layout for the current page
为了实现这个功能,我应该做类似这样的事情:
class PageAdmin(admin.ModelAdmin):
def formfield_for_foreignkey(self, db_field, request, **kwargs):
if db_field.name == "layout":
kwargs["queryset"] = Template.objects.get_a_queryset()
return super(PageAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
这个方法是有效的,但每次我访问页面时,这个函数会被调用3次,总共会进行5次查询(3次加上默认的2次)。也就是说,它在处理同一个数据库字段时重复了3次。
我该如何把这个查询减少到只进行1次呢?这是预期的行为吗?如果是的话...为什么会这样呢?