2010-06-17 79 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