【发布时间】:2012-09-17 07:42:49
【问题描述】:
我有几个模型是这样设置的:
class Bar(models.Model):
baz = models.CharField()
class Foo(models.Model):
bar1 = models.ForeignKey(Bar)
bar2 = models.ForeignKey(Bar)
bar3 = models.ForeignKey(Bar)
在代码的其他地方,我最终得到了一个 Bar 的实例,并且需要找到它以某种身份附加到的 Foo。现在我想出了使用 Q 进行多重 OR 查询,如下所示:
foo_inst = Foo.objects.get(Q(bar1=bar_inst) | Q(bar2=bar_inst) | Q(bar3=bar_inst))
我需要弄清楚的是,这 3 个案例中的哪一个实际命中,至少是成员的名称(bar1、bar2 或 bar3)。有没有好的方法来做到这一点?有没有更好的方法来构建查询以收集这些信息?
【问题讨论】:
-
bar1、bar2、bar3有什么区别? -
它们很可能指向不同的 Bar 实例!
-
抱歉,bar1、bar2 和 bar3 都是独立的 Bar 实例。一个 Foo 将有 0-3 个不同的 Bars。
标签: python django model foreign-keys