就我個人而言,我會爲您的多對多定義添加'related_name'。
喜歡的東西
class Thing1(models.Model):
thing2s = models.ManyToManyField(Thing2, blank=True, related_name='thing1s')
然後,從Thing2,您可以訪問 'thing1s',它涉及到由....
thing2.thing1s.all()
但是,我要問,作爲如上所述,如果thing2只能與一個thing1相關,那麼你應該使用ForeignKey(在Thing2中,而不是Thing1中)而不是ManyToMany。但是,上述解決方案仍然有效。
所以,你的類將是....
class Thing1(models.Model):
pass
class Thing2(models.Model):
thing1 = models.ForeignKey(Thing1, blank=True, related_name='thing2s')
所以,從thing2,你可以得到在通過簡單的單thing1 ....
a_thing1 = thing2.thing1
,並從thing1,你可以得到所有通過引用它的thing2s列表....
thing2s = thing1.thing2s.all()
好感謝您的幫助,但實際上,我的數據庫是由這樣一個Thing2只能是長到一件事1。這個主要問題是在我的「thing2s = myThing2」聲明中。我不知何故必須通過Thing2s的thing2s列表來查看myThing2是否在該列表中。 – Andrew 2011-02-25 02:00:25
聽起來你可能實際上需要使用ForeignKey而不是ManyToMany - 這就是你描述的情況下使用的關係。話雖如此,如果您使用的是ManyToMany,lovefaithswing的答案是正確的 - thing2s = myThing2將設置連接來過濾關聯的Things2的列表。 – 2011-02-25 02:48:08