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インスタンスを選択するクエリセットTmp3が欲しいTmp3.var3.var2.var1.idTmp3.user.id.

PostgreSQLのInnerJoinでそれを行う方法は知っていますが、Djangoクエリセットでそれを行う方法がわかりません。

4

2 に答える 2

1

私が理解していることからTmp3、属性がテーブルuser内の関連ユーザーと一致するオブジェクト(現在のオブジェクトの場合)を取得したいのですが、 F式を使用できるようです。Tmp1Tmp3

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 に答える