0

プロファイルへの外部キーと、ExternalAttribute モデルとの多対多の関係を持つ Connector というモデルがあります。ExternalAttribute モデルには、静的な属性オブジェクトのリストがあります。ユーザーがプロファイルから ExternalAttribute モデルの属性を追加および削除できるようにしたいと考えています。

フォームで、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.

非効率的なデータベースを使用しており、これらのモデルを使用する必要があります。助けてくれてありがとう。

4

1 に答える 1

1

M2M 関係を保存する前に、オブジェクトを保存する必要があります (主キーを持つようにするため)。コードを次のように更新します

connector = Connector(profile=profile)
connector.profile = profile
connector.save()
connector.attributes = self.cleaned_data['selected_attributes']
connector.save()
于 2013-10-31T15:21:39.757 に答える