我使用Django 1.11.2來開發一個網站。我使用ModelForms在我的網站上編輯我的模型實例。表單中的每個字段都通過我的視圖中的'initial'來獲取我想要編輯的實例的合適值。它適用於除ManyToManyFields之外的所有字段。Django ModelForm ManyToManyField初始值
相關的代碼如下所示:
models.py:
class model1(models.Model):
name = models.CharField(max_length=45, blank=False, null=False)
class model2(models.Model):
name = models.CharField(max_length=45, blank=False, null=False)
relation = models.ManyToManyField(model1)
中的ModelForm在forms.py:
class model2_form(forms.ModelForm):
class Meta:
model = model2
fields = '__all__'
,我用它來編輯MODEL2 intances的觀點:
def model2_edit(request, objectid):
link = 'Model2'
model2_inst = model2.objects.get(id=objectid)
form = model2_form(initial={'name': model2_inst.name,
'relation': ???})
if request.method == 'POST':
f = model2_form(request.POST, instance=model2_inst)
if f.is_valid():
f.save()
return HttpResponseRedirect('/model2')
return render(request, "edit_db.html",
{"form": form, "link":link})
每次我通過ModelForm編輯model2的實例時,已經存在的實例的'關係'沒有被預先選擇('initial'不工作)。如果我不保存表單而沒有再次選擇關係,它們會被刪除,並且model2的實例已經不再關係。 在'???'在我的代碼中,我嘗試了很多方法來獲得已經在表單中選擇的關係,但是我找不到一種工作方式。
我希望我設法描述我的問題,提前感謝任何幫助或想法。
非常感謝你,我以爲我試過這個,我一定是犯了一個錯誤。現在它工作正常。 – Nkls155