django - 选择多对多关系匹配的额外数据

时间:2013-04-21 05:30:30

标签: django orm django-models

我有这两个模型

class SubGroupEvent(models.Model):
    class Meta:
        unique_together = ('subscription', 'group', 'event')
    subscription = models.ForeignKey(Subscription, null=True, blank=True)
    group = models.ForeignKey(AbstractGroup)
    event = models.ForeignKey(Event)

class Events
    title = models.CharField(max_length=255)

要获取组ID中的所有事件,请使用

events = events.filter(subgroupevent__group_id=groupID)

但我需要能够获得subscription WHERE subgroupevent__group_id = groupID以及事件数据。这可能吗?

2 个答案:

答案 0 :(得分:0)

过滤相关模型:

尝试标准Lookups that span relationships,如果您遇到了问题Q objects。但请注意,并非每个sql查询都可以使用ORM完成,可能会出现需要回退到raw sql的情况,但即使这样,您也可以将原始sql中的字段映射到模型字段(此功能实际上是很酷的一个)。

Retriving相关模型

要使用单个查询来检索对象,您可能会发现有用的select_relatedprefetch-related

答案 1 :(得分:0)

subgroupevent_list = SubGroupEvent.objects.filter(group_id=groupID)

for subgroupevent in subgroupevent_list:
    event = subgroupevent.event