【问题标题】:django - selecting extra data on many to many relation matchingdjango - 选择多对多关系匹配的额外数据
【发布时间】:2013-04-21 05:30:30
【问题描述】:

我有这两个模型

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 以及事件数据。这可能吗?

【问题讨论】:

    标签: django orm django-models


    【解决方案1】:
    subgroupevent_list = SubGroupEvent.objects.filter(group_id=groupID)
    
    for subgroupevent in subgroupevent_list:
        event = subgroupevent.event
    

    【讨论】:

    • SubGroupEvent.objects.select_related('event').filter(group_id=groupID) 有意义吗?
    【解决方案2】:

    过滤相关模型:

    试试标准的Lookups that span relationships,如果你卡住了,试试Q objects。但请注意,并非每个 sql 查询都可以使用 ORM 完成,可能存在需要回退到 raw sql 的情况,但即使如此,您也可以将字段从原始 sql 映射到您的模型字段(这个功能实际上非常酷一)。

    检索相关模型

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-12
      • 2023-02-02
      • 1970-01-01
      • 2021-07-12
      • 1970-01-01
      • 1970-01-01
      • 2012-11-17
      相关资源
      最近更新 更多