【发布时间】:2010-11-09 18:56:43
【问题描述】:
考虑模型:
#Models
class A(models.Model):
fieldOfA = models.CharField(max_length = 4)
class B(models.Model):
fieldOfB = models.CharField(max_length = 4)
class C(models.Model):
classA = models.ForeignKey(A, blank=True, null=True)
classB = models.ForeignKey(B, blank=True, null=True)
当我创建 C 的对象时,我确保对象具有 classA 或 classB 关系。
我正在寻找一个单一的查询集,它为我获取特定 fieldOfA 或特定 fieldOfB 值的 C 对象。
我试过了,但它失败了(返回 [],尽管结果有效)。
#Views - assume double underscore in the query
from django.db.models import Q
my_query = C.objects.filter(Q(classA _ _isnull = False, classA _ _fieldOfA = 'foo') | Q(classB _ _isnull = False, classB _ _fieldOfB = 'foo'))
我看到的问题是“|”那是应用。 classA 和 classB 的两个不同查询集工作正常。有什么办法可以应用单个查询集来完成这项工作?或者更糟糕的是,一种合并单个查询集的方法。
【问题讨论】:
标签: django django-queryset django-q