2014-03-18 46 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,) 

感謝您的閱讀!

回答