django admin模型编辑表单 - 如何将外键仅过滤到相关模型

时间:2017-11-14 17:28:31

标签: django django-admin

我在django中有一个帐户模型,其中包含Payment的外键和Address的onetoone。

在管理员的“帐户”部分,我可以编辑特定模型,并通过选择小部件编辑字段paymentaddress。但是,如何过滤选项以便仅显示相关模型。 (即不是每个用户的每个地址或付款,只有来自该用户的地址或付款)。

RelatedOnlyFieldListFilter似乎只适用于模型列表视图。有没有办法在模型编辑视图中使用它?

1 个答案:

答案 0 :(得分:0)

您可能正在寻找的是致电inlines。它允许您直接在父模型表单中编辑相关对象,在这种情况下,它将是Account模型。以下是实施示例:

class Account(models.Model):
    name = models.CharField(max_length=100)

class Payment(models.Model):
    account= models.ForeignKey(Account, on_delete=models.CASCADE)
    amount= models.CharField(max_length=100)

class Adress(models.Model):
    account= models.OneToOneField(Account, on_delete=models.CASCADE)
    adress= models.CharField(max_length=100):

class AccountAdmin(admin.ModelAdmin):
    inlines = [
        Paymentinline,
        Adressinline,
    ]

请注意,这不是一个完整的实现(您需要构建两个内联),请按照内联文档获取更多信息,但上面是它的基础知识。