Django管理员内联不显示抽象模型的外键选择

时间:2013-08-06 22:05:16

标签: django django-admin

我有一个具有抽象基本模型的应用程序:

class Approval(models.Model):
    approver=models.ForeignKey(User,to_field='username')
    decision=models.CharField(max_length=50,choices=APPROVAL_TYPES)
    response=models.TextField()

    class Meta:
        abstract=True

然后我有一系列基于抽象模型的模型,所有这些模型通常都定义了一个外键(因为它们与不同的模型有关)以及该模型独有的一些字段。像这样:

class InternshipApproval(Approval):
    req=models.ForeignKey(InternshipRequest)
    priority=models.BooleanField(blank=True)

    def __unicode__(self):
        return "Approval for %s" % (self.req)

然后,当我设置我的管理员,比如说,InternshipRequest模型(实际上我的子类之一可能与之相关的任何模型)时,我希望将InternshipApproval模型包含为内联:

class InternshipApprovalInline(admin.StackedInline):
    model=InternshipApproval
    max_num=1
    extra=1
    can_delete=False

...

class InternshipAdmin(admin.ModelAdmin):
    inlines= [InternshipApprovalInline]

一切都很好,除了在加载管理界面时,"批准者"抽象基础模型中的字段是一个空的选择元素。

我已经验证过,如果我在子模型上包含该字段(而不是抽象基础模型),它将正确地获取完整的用户查询集(或者我想要使用各种策略对其进行的任何过滤我和# 39;在这里发现了SO)。我还验证了如果我单独注册InternshipApproval模型管理员,那么那里的管理窗格(即不作为内联)将正确地获得完整的用户查询集,即使该字段在抽象基础模型上也是如此。最后,我已经验证了批准者字段仍然有效......我可以使用旁边的小加号添加新用户,该用户显示并正确保存(但随后从select元素中再次消失)如果我进去编辑模型)。所以有一些关于在抽象模型上有一个外键字段的东西,它不会让它通过内联的查询集(我不能覆盖它,不能传递初始值)等等)。我错过了什么,这里? (请注意我在Django 1.5.1上)非常感谢。

0 个答案:

没有答案