我想为我的采购模型创建一个模型管理器:
class Purchase(models.Model)
number = models.IntegerField
class InventoryLog(models.Model)
purchase = models.ForeignKey(Purchase)
sold_out = models.BooleanField(default=false)
我希望我的模型管理器返回与sold_out
值为True
的InventoryLog
对象无关的任何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的评论。