Django Querysets-通过相关对象中的布尔值过滤对象



我想为我的采购模型创建一个模型管理器:

class Purchase(models.Model)
    number = models.IntegerField
class InventoryLog(models.Model)
    purchase = models.ForeignKey(Purchase)
    sold_out = models.BooleanField(default=false)

我希望我的模型管理器返回与sold_out值为TrueInventoryLog对象无关的任何Purchase对象

有没有一种方法可以用queryset、Q对象或F对象来处理这个问题,或者我需要求助于for循环?

我相信Purchase.objects().exclude(inventorylog__sold_out=True)会做到的。

如果你想为你的模型使用管理,这个怎么样:

#models.py
class PurhchaseNotSoldOut(models.Manager):
    def get_queryset(self):
        return super(PurchaseNotSoldOut, self).get_queryset()
                          .exclude(purhcase_logs__sold_out=True)
class Purchase(models.Model)
    number = models.IntegerField
    notSoldOut = PurchaseNotSoldOut()
class InventoryLog(models.Model)
    purchase = models.ForeignKey(Purchase, related_name='purchase_logs')
    sold_out = models.BooleanField(default=false)

代码示例更新感谢Peter DeGlopper的评论。

相关内容

  • 没有找到相关文章

最新更新