2013-10-29 226 views
0

我有兩個模型A和B,其中Django的許多一對多的關係

class B(Model): 
    As = models.ManyToManyField(A) 

然後我做了以下

a_instance.b_set.clear() 
爲了從a_instance刪除任何b_instances所有引用

。但後來我得到了以下錯誤:

Database Error: column a_b/id doesn not exists 
Line 1: SELECT "a_b"."id", 

這是真實的,我中間表A_B在許多一對多的關係(A和B之間)不具有場名爲id。它有兩個其他字段,而不是a_id和b_id。

那麼有誰知道我怎麼能強迫Django使用a_id和b_id而不是僅僅是id?

+0

@btoueg,我從文檔https://docs.djangoproject.com/en/dev/topics/db/examples/many_to_many/取得它。他們顯示的例子是p2.article_set.clear(),所以它對我來說看起來很合理。 –

+0

確實!我跳到結論... –

回答

0

Django的要求有id字段多對多多種關係表。

0

如果您需要刪除兩個模型之間的一個實例的關係,可以通過訪問關係表的管理器來完成。在M2M關係表可以通過MyModel.relations.through被訪問如此刪除的關係:

B.As.through.objects.filter(a=a_instance).delete() 

參考:

https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ManyToManyField.through

信用:How to remove all relations from manytomany?

+0

我有錯誤類型對象'A'沒有屬性'關係' –

+0

'關係'應該是你的關係的名稱,比較。編輯。 –

+0

感謝您的澄清,但現在我收到了與我以前完​​全相同的錯誤 - 「a_b表中沒有id字段」。任何其他想法爲什麼會發生? –