2010-06-17 76 views
0

我一直在努力掌握ORM中的关系。与过滤的复杂关系

我想获取与特定事件相关的不同CostItem查询集。

通常我会筛选我感兴趣的特定事件的CostFixedList并获取Cost_Rate ID。从那我可以得到CostItem ID。

我可以在SQL中轻松完成此任务,但无法理解如何从ORM开始。任何人都可以将我指向正确的方向吗?

class Event(models.Model): 
    event_type = models.ForeignKey(EventType) 
    retailer = models.ForeignKey(Retailer) 
    .... 

class CostItem(models.Model): 
    name = models.CharField("Name", max_length=50, unique=True) 
    cost_type = models.ForeignKey(CostType, verbose_name="Type") 
    active = models.BooleanField("Active", default=True) 

class CostRate(models.Model): 
    cost_item = models.ForeignKey(CostItem, verbose_name="Item") 
    valid_from = models.DateField("From") 
    valid_till = models.DateField("Till") 
    unit_amount = models.DecimalField("Price Per Unit", max_digits=5, decimal_places=2) 

class CostFixedList(models.Model): 
    event = models.ForeignKey(Event) 
    cost_rate = models.ForeignKey(CostRate) 
    units = models.IntegerField() 
    appointment = models.ForeignKey(Appointment, null=True, blank=True) 
+0

的可能重复(HTTP: //sackoveroverflow.com/questions/3060637/reverse-relationships-and-distinct-querysets) – 2010-06-17 13:33:54

+0

是的。这是重复的。它看起来不像是经历过的。抱歉。 – alj 2010-06-17 15:17:02

回答

1

我想这应该这样做(其中myevent是您希望得到CostItem查询集的情况下):[反向关系和不同的查询集]

qs = CostItem.objects.filter(costrate__costfixedlist__event=myevent) 
+0

谢谢你。有用! – alj 2010-06-17 15:15:32