2012-04-22 21 views
0

こんにちは、私は次のクラスDjangoのモデル:データの取得

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) 

を持っている私はmyotherid = 1234とData.titleでのTest1項目の全てを取得することができますどのように、Djangoのモデルとこのすべてに非常に新しいです= "foo" という基本的

、この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" 

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

+0

念のため:([暗黙の 'JOIN'の表記を使用しない]してくださいのhttp

はしかし、あなたの質問に答えるために、ここではDjangoのコードは、あなたが提供するモデルとのようになります。 ://stackoverflow.com/a/44932/548696)。 – Tadeck

答えて

0

私はあなたがManyToManyFieldを使用してに見たいと思うかもしれませんことをダニエルに同意します。

Test1.objects.filter(myotherid=1234, testdata__data__title='foo') 
0

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

だから、あなたは、単にこれを行うことができ、あなたのTest1クラスにdatas = ManyToManyField('Data')を追加したと仮定すると:

Test1.objects.filter(myotherid=1234, datas__title='foo') 
関連する問題