2009-12-23 54 views
6

嗨,我有一個模型,其中有2個多對多的字段。一個是標準的m2m字段,它不使用任何通過表,而另一個是更復雜一點,並有一個通過表。我正在使用Django forms.modelform來顯示和保存表單。我要保存表單代碼是Django Forms save_m2m

if form.is_valid(): 
     f = form.save(commit=False) 
     f.modified_by = request.user 
     f.save() 
     form.save_m2m() 

當我嘗試保存我得到以下錯誤的形式:

無法設置值上ManyToManyField指定的中介模式。

我知道這是發生在我做form.save_m2m()因爲通過表。我想要做的是告訴Django忽略帶直通表的m2m字段,但仍然保存沒有直通表的m2m字段。然後,我可以繼續手動保存穿透表字段的數據。

感謝

回答

0

您不能保存M2M「沒有通過表」

要保存存儲在通過表(只有在通過表)

4

數據如果你有一個帶有多個字段的模型,那麼一個是通過一個通過表來完成的,而另一個是沒有通過表的常規多對多關係。您仍然可以使用save_m2m()來保存常規的。只需將通過字段添加到您的表單上的排除列表。

添加您的表單類中:

class Meta: 
    model = YourModel 
    exclude = ('m2mthroughfield',)