我在django中有这些数据模型:
class User(models.Model):
type = models.CharField()
class Tmp1(models.Model):
var1 = models.ForeignKey(User)
class Tmp2(models.Model):
var2 = models.ForeignKey(Tmp1)
class Tmp3(models.Model):
user = models.ForeignKey(User)
var3 = models.ForeignKey(Tmp2)
我希望有一个Tmp3
查询集,用于选择Tmp3
Tmp3.var3.var2.var1.id
等于Tmp3.user.id.
的实例
我知道我应该如何在PostgreSQL中使用InnerJoin,但我不知道如何使用Django查询集。
答案 0 :(得分:1)
根据我的理解,您希望获得Tmp3
个user
属性与Tmp1
表中相关用户匹配的对象(对于当前Tmp3
对象) - 听起来你可以使用F expressions
from django.db.models import F
Tmp3.objects.filter(var3__var2__var1=F('user'))
答案 1 :(得分:-1)
尝试以下方法:
object_q = 1
tmp3_pk = Tmp3.objects.get(pk=object_q).user.pk
queryset = Tmp3.objects(var3__var2__var1__pk=tmp3_pk)
__
(双下划线)将引用相关模型的属性。
您也可以直接引用对象:
object_q = 1
tmp3_user = Tmp3.objects.get(pk=object_q).user
queryset = Tmp3.objects(var3__var2__var1=tmp3_user)
在此处查看跨相关对象执行查询的完整详细信息: https://docs.djangoproject.com/en/dev/topics/db/queries/#related-objects