2013-10-31 141 views
0

我有一個叫做Connector的模型,它有一個外鍵用於配置文件和一個ExternalAttribute模型的多對多關係。 ExternalAttribute模型具有靜態的屬性對象列表。我希望用戶能夠從他們的配置文件中添加和刪除ExternalAttribute模型的屬性。Django:多對多關係編輯

在形式,我拉下從ExternalAttribute所有對象爲ModelMultipleChoiceField,工作正常,但我不能保存所選屬性和對象添加到連接器的模型。

這裏是保存表單代碼:

profile = Profile.objects.get(user = User.objects.get(username=self.cleaned_data['user'])) 

connector = Connector(profile=profile) 
connector.profile = profile 
connector.attributes = self.cleaned_data['selected_attributes'] 
connector.save() 

當我嘗試選擇屬性保存的形式,我得到這個錯誤的堆棧跟蹤:

ValueError: "<Connector: Connector object>" needs to have a value for field "connector" before this many-to-many relationship can be used. 

我一起工作一個效率低下的數據庫,必須使用這些模型。謝謝您的幫助。

回答

1

在保存M2M關係之前,必須保存對象 - 以便它具有主鍵。更新您的代碼爲

connector = Connector(profile=profile) 
connector.profile = profile 
connector.save() 
connector.attributes = self.cleaned_data['selected_attributes'] 
connector.save()