簡體   English   中英

Django-如何過濾檢查外鍵屬性的對象列表?

[英]Django - how can i filter a list of objects checking a foreign key attribute?

首先,抱歉我的英語不好。

我必須過濾查詢,但使用外鍵屬性。 我有一個WorkOrder模型,還有其他與訂單移動有關的模型。

這是模型

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個工作訂單,這些訂單的OrderMovement的狀態為3或4,包含在該工作訂單的任何變動中。

我真的不知道該怎么做。

希望你能理解我。

謝謝!

與往常一樣,您從要獲取的模型開始,並通過雙下划線關注關系。

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

首先使用related_name輕松執行反向關系查找

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

然后,您可以查詢工作單,並使用related_name進行反向關系過濾。

另外,您還要求distinct以避免重復

您的查詢應為:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM