0

我在 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的实例Tmp3Tmp3.var3.var2.var1.idTmp3.user.id.

我知道我应该如何在 PostgreSQL 中使用 InnerJoin,但我不知道如何使用 Django 查询集。

4

2 回答 2

1

据我了解,您希望获取Tmp3user属性与表中相关用户匹配的对象Tmp1(对于当前Tmp3对象)-听起来您可以使用F 表达式

from django.db.models import F
Tmp3.objects.filter(var3__var2__var1=F('user'))
于 2012-11-11T20:43:26.243 回答
-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

于 2012-11-11T19:35:31.057 回答