Django - 基于其他模型的过滤过滤

时间:2015-11-06 12:57:21

标签: python django filter

我正在研究一些Django应用程序,我遇到了一个我不知道如何解决的问题。

我必须建模:

class A(models.Model):
    STATE_NEW = 1
    STATE_DELIVERED = 2
    STATE_LOST = 3

    STATE_CHOICES (
        (STATE_NEW, 'New order'),
        (STATE_DELIVERED, 'Delivered'),
        (STATE_LOST, 'Lost'),
    )
order_id = models.IntegerField()
status = models.IntegerField(u'Status', default=NEW_STATE, choices=STATE_CHOICES)

class B(models.Model):
    # some_fields
    order = models.ForeignKey(A)

我在模型B中有一些字段。我想要实现的是为模型B添加过滤器到管理站点,允许过滤“状态”(来自模型A的字段)。是否有可能在不在模型B中定义新字段的情况下实现它?

我没有想到任何事情,因为我不想在模型B中保留所有可能的STATE_CHOICES的“状态”字段(因为“状态”不是模型B的字段)。

你能帮帮我吗? :)

1 个答案:

答案 0 :(得分:3)

您可以使用list_filter

执行此操作
list_filter = ('order__status', )

from docs:

  

list_filter中的字段名称也可以使用__ lookup

来跨越关系