Django - 如何检查外键属性筛选对象列表?

2024-10-04 01:26:38 发布

您现在位置:Python中文网/ 问答频道 /正文

首先为我糟糕的英语感到抱歉。在

我必须使用外键属性过滤查询。我有一个工作订单模型和其他模型与订单运动。在

这是模型

class OrderMovements(models.Model):
    workorder = models.ForeignKey(
            WorkOrder,
            verbose_name=_('order'),
        )
    status = models.IntegerField(
            choices=FULL_CHOICES,
            default=1,
            verbose_name=_('status'),
        )
    timestamp = models.DateTimeField(auto_now_add=True, auto_now=False)

就像你看到的,一个工单可以有很多移动,我需要做的查询是一个查询,它获取最近10个工单,这些工单的任何移动都包含状态为3或4的OrderMovement。在

我真不知道a是怎么做到的。在

希望你能理解我。在

谢谢!在


Tags: name订单模型autoverbosemodel属性models
2条回答

首先使用related_name轻松执行反向关系查找

class OrderMovements(models.Model):
    workorder = models.ForeignKey(
        WorkOrder,
        related_name='ordermovements',
        verbose_name=_('order'),
    )
    // rest code

然后可以查询工单并使用相关的名称进行反向关系筛选。在

您还需要distinct来避免重复

您的查询应该是:

^{pr2}$

和往常一样,您从想要得到的模型开始,然后通过双下划线来跟踪关系。在

WorkOrder.objects.order_by('-timestamp').filter(ordermovements__status__in=[3, 4])[:10]

相关问题 更多 >