0

假设我有以下 Django 模型:

class myObj1(models.Model):
    myField1 = models.IntegerField()     


class myObj2(models.Model):
    myLocalObj1 = models.ManyToManyField(myObj1)     

此外,假设我有一个独特的 myObj1 列表:

a = myObj1(myField=1)
b = myObj1(myField=2)
c = myObj1(myField=3)
myTargetList = [a, b, c]

现在,我想使用 Q 对象编写一个 Django 查询,以便它返回所有具有 myTargetList 成员作为 myLocalObj1 的 myObj2。此外,我事先不知道 myTargetList 的确切大小。

我该怎么做?这显然行不通:

myObj2.objects.filter(Q(myLocalObj1__in=myTargetList))
4

1 回答 1

1

编辑:为了使这更符合您正在寻找的内容(尽管我不一定建议这样做),您可以:

vallist=[]
for b in myTargetList:
    vallist.append(b.myField)

myObj2.objects.filter(myLocalObj1__in=myObj1.objects.filter(myField__in=vallist))

这可在此处的 Django 文档中找到: https ://docs.djangoproject.com/en/dev/topics/db/queries/#lookups-that-span-relationships

于 2013-06-06T05:05:04.477 回答