2014-03-18 108 views
0

我有以下模型结构。是否有可能改变库存管理器以检查由于已被切片而产生的面包是否不再在库存中?如何根据子模型中的字段筛选模型?

from django.db import models 
from shipping.models import Shipment 


class InventoryManager(models.Manager): 
    def get_queryset(self): 
     # BUG: Does not check if BreadSlices are shipped 
     return super(InventoryManager, self).get_queryset().filter(
      shipment__isnull=True,) 


class BreadLoaf(models.Model): 
    shipment = models.ForeignKey(Shipment, null=True, blank=True,) 
    ... 

    objects = models.Manager() 
    inventory = InventoryManager() 

    def get_shipment(self): 
     if self.breadslice_set.all().exists(): 
      # BUG: Returns duplicates 
      return [bs.shipment for bs in self.breadslice_set.all()] 
     else: 
      return [self.shipment] 


class BreadSlice(models.Model): 
    loaf = models.ForeignKey(BreadLoaf) 
    shipment = models.ForeignKey(Shipment, null=True, blank=True,) 
    ... 

我一直希望使用get_shipment方法,但它不是一个字段。我试过以下没有成功

class InventoryManager(models.Manager): 
    def get_queryset(self): 
     return super(InventoryManager, self).get_queryset().filter(
      shipment__isnull=True, 
      breadslice_set.shipment_isnull=True,) 

感谢您的阅读!

回答