我們有一個包含多對多字段的django模型。我們使用相同的表單來添加/編輯對象。加載現有對象進行編輯時,除了多對多字段外,所有字段都有與之相關的值(所有選項都不是多選按鈕控件被選中)在自定義(非管理)Django視圖中編輯對象時,多對多字段中的值未被選中
是否有任何特殊的方式將值綁定到多對多字段,以便當窗體加載要編輯的對象時,該字段的當前值顯示在MultipleSelectBox Widget中選定。
我試着讀了對SO豎起用戶類似的問題,但找不到答案,我的查詢:(。
我們有一個包含多對多字段的django模型。我們使用相同的表單來添加/編輯對象。加載現有對象進行編輯時,除了多對多字段外,所有字段都有與之相關的值(所有選項都不是多選按鈕控件被選中)在自定義(非管理)Django視圖中編輯對象時,多對多字段中的值未被選中
是否有任何特殊的方式將值綁定到多對多字段,以便當窗體加載要編輯的對象時,該字段的當前值顯示在MultipleSelectBox Widget中選定。
我試着讀了對SO豎起用戶類似的問題,但找不到答案,我的查詢:(。
嘗試這樣做! 這是我的例子,說明您可以如何做到這一點:d
class FirstModel(models.Model):
title = models.CharField(max_length = 100, unique = True)
class SecondModel(models.Model):
name = models.CharField(max_length = 100, unique = True)
first_model = models.ManyToManyField(FirstModel)
class MyForm(forms.Form):
name = forms.CharField(max_length = 100, required = True)
first_model = forms.ChoiceField(widget = forms.MultipleSelect)
後,將其保存到你的附加功能,然後對其進行編輯在編輯功能,這樣做:
def edit(request):
my_model = MyModel.objects.filter(name = 'You Unique Name').get()
first_model = my_model.first_model.all()
my_form = MyForm(initial = {'first_model': first_model})
就是這樣:d
有同樣的問題,它是由commit=False
造成的。解決這個問題的方法是用save_m2m()
# Create a form instance with POST data.
f = AuthorForm(request.POST)
# Create, but don't save the new author instance.
new_author = f.save(commit=False)
# Modify the author in some way.
new_author.some_field = 'some_value'
# Save the new instance.
new_author.save()
# Now, save the many-to-many data for the form.
f.save_m2m()
真的很難從你寫的內容中知道。你沒有給我們任何代碼,我的魔法水晶球現在拒絕工作。你的表單是如何定義的?您的ManyToMany關係的表單字段?你重寫什麼?怎麼樣? – koniiiik
請張貼您的表格代碼 – Udi