与过滤的复杂关系

时间:2010-06-17 13:23:51

标签: django django-models

我正忙着处理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)

1 个答案:

答案 0 :(得分:1)

我认为应该这样做(myevent是您希望获取CostItem查询集的事件):

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