0

こんにちは、私は次のクラスを持っています

Class Test1(models.Model):
    user = models.OneToOneField(User)
    myotherid = models.CharField(max_length=255)

Class TestData(models.Model):
    data = models.ForeignKey(Data)
    test1 = models.ForeignKey(Test1)

Class Data(models.Model):
    title = models.CharField(max_length=255)

私はDjangoモデルに非常に慣れていませんが、myotherid = 1234およびData.title = "foo"のTest1アイテムをすべて取得するにはどうすればよいですか

基本的に、次の SQL を実行します。

select Test1.* from Test1 t, TestData td, Data d where t.myotherid=1234 and t.id = td.test1 and td.data = d.id and d.title = "foo"

ご協力いただきありがとうございます

4

2 に答える 2

0

このTestDataクラスは、ManyToMany関係を定義するためだけにあるため、不要です。これは、Djangoで直接行うことができますManyToManyField。中間クラスはまだ存在しますが、明示的に定義されていません。リレーション自体に追加情報を格納する必要がある場合にのみ、定義する必要があります。

datas = ManyToManyField('Data')したがって、クラスに追加したと仮定するTest1と、次のように簡単に実行できます。

Test1.objects.filter(myotherid=1234, datas__title='foo')
于 2012-04-22T18:55:14.747 に答える
0

の使用を検討したいというダニエルの意見に同意しますManyToManyField

ただし、質問に答えるために、提供したモデルで Django コードがどのようになるかを次に示します。

Test1.objects.filter(myotherid=1234, testdata__data__title='foo')
于 2012-04-22T21:32:04.750 に答える