「多対多の関係を使用するには、インスタンスに主キーの値が必要です」というエラーを回避する方法はありますか?
別のモデルとの多対多の関係を含む、いくつかのフィールドを持つモデルがあります。モデルの新しいインスタンスを作成するときに、これらのフィールドにデフォルト値を設定する機能があります。HTTP GET を処理するときにビューでこれを行います。m2m フィールドは、フォームセットを使用してレンダリングされます。
状況を説明する擬似コードを次に示します。
class MyRelatedModel(models.Model):
name = models.CharField(max_length=100,blank=True)
class MyModel(models.Model):
name = models.CharField(max_length=100,blank=True)
relatedModels = models.ManyToManyField("MyRelatedModel")
def initialize(self):
self.name = "my default name"
# this bit doesn't really matter...
# just assume I am creating a new set of RelatedModels that I want to associate with my this new MyModel...
newRelatedModels = []
for name in ["related model 1", "related model 2", "related model 3"]:
relatedModel = MyRelatedModel(name=name)
relatedModel.save()
newRelatedModels.append(relatedModel.id)
self.relatedModels = newRelatedModels # this is invalid!
def MyView(request):
if request.method == 'GET':
model = MyModel()
model.initialize()
form = MyForm(instance=model)
return render_to_response("my_template.html", {"form" : form}, context_instance=RequestContext(request))
助言がありますか?
モデル側ではなくフォーム側でこれを処理する必要があるのではないかと思いますが、それも私を混乱させています。