【发布时间】:2014-12-25 19:31:19
【问题描述】:
我正在尝试在 documentation 之后的外键字段中过滤我的管理员选择。
我的模型很简单:
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 次相同的 db_field。
如何将其减少到只有 1 个查询?这是预期的行为吗?如果是……为什么?
【问题讨论】:
标签: python django django-admin django-1.7 django-modeladmin