有沒有解決方法「實例需要有一個主鍵值之前,可以使用多對多關係」的錯誤?如何設置默認值爲manytomanyfield
我有一個模型有幾個字段,包括與另一個模型的多對多關係。當我創建模型的新實例時,我有一個函數可以在這些字段上設置默認值。處理HTTP GET時,我在視圖中執行此操作。 m2m字段使用formset呈現。
這裏描述的情況有些僞代碼:
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))
有什麼建議?
我懷疑我可能需要在表單一側而不是模型一側處理這個問題,但這也讓我感到困惑。
您需要保存模型與其他模型之前raleted它。像self.save() – danihp 2012-04-21 18:36:22