我有一个名为Connector的模型,它具有配置文件的外键和与ExternalAttribute模型的多对多关系。 ExternalAttribute模型具有静态的属性对象列表。我希望用户能够从他们的配置文件中添加和删除ExternalAttribute模型的属性。
在表单中,我将ExternalAttribute中的所有对象下拉到ModelMultipleChoiceField中,该工作正常,但我无法保存所选属性并将对象添加到Connector模型。
这是表单保存代码:
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.
我正在使用效率低下的数据库,必须使用这些模型。谢谢你的帮助。
答案 0 :(得分:1)
在保存M2M关系之前,必须保存对象以使其具有主键。将代码更新为
connector = Connector(profile=profile)
connector.profile = profile
connector.save()
connector.attributes = self.cleaned_data['selected_attributes']
connector.save()