2011-09-06 53 views
1

我們有一個包含多對多字段的django模型。我們使用相同的表單來添加/編輯對象。加載現有對象進行編輯時,除了多對多字段外,所有字段都有與之相關的值(所有選項都不是多選按鈕控件被選中)在自定義(非管理)Django視圖中編輯對象時,多對多字段中的值未被選中

是否有任何特殊的方式將值綁定到多對多字段,以便當窗體加載要編輯的對象時,該字段的當前值顯示在MultipleSelectBox Widget中選定。

我試着讀了對SO豎起用戶類似的問題,但找不到答案,我的查詢:(。

+1

真的很難從你寫的內容中知道。你沒有給我們任何代碼,我的魔法水晶球現在拒絕工作。你的表單是如何定義的?您的ManyToMany關係的表單字段?你重寫什麼?怎麼樣? – koniiiik

+0

請張貼您的表格代碼 – Udi

回答

0

嘗試這樣做! 這是我的例子,說明您可以如何做到這一點: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

1

有同樣的問題,它是由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() 
相關問題