我有几个设置如下的模型:
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进行多重或查询的方法,例如:
foo_inst = Foo.objects.get(Q(bar1=bar_inst) | Q(bar2=bar_inst) | Q(bar3=bar_inst))
我需要弄清楚的是,在实际遇到的3个案例中,哪一个至少是成员的名称(bar1,bar2或bar3)。有什么好方法吗?有没有更好的方法来构造查询以收集该信息?
最佳答案
try:
Foo.objects.get(bar1=bar_inst)
print 'bar1'
except Foo.DoesNotExist:
try:
Foo.objects.get(bar2=bar_inst)
print 'bar2'
except Foo.DoesNotExist:
try:
Foo.objects.get(bar3=bar_inst)
print 'bar3'
except Foo.DoesNotExist:
print 'nothing found'
还可以考虑将related_name添加到模型的所有条形字段中。
关于python - Django在多重OR查询中找到匹配的字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12454997/