Skip to main content
 首页 » 编程设计

python之Django 。如何在表单 ManyToMany 字段中显示为 Select(下拉列表)

2024年08月23日34lovecherry

我有一个ManyToMany关系User->User_Towns->Towns...

towns = models.ManyToManyField("Town", blank=False,verbose_name='Town',related_name="user_set", related_query_name="user") 

...并且在 SignForm 中想要显示 DropDownList 而不是 MultipleChoice。如果在 form.py 中,我会这样写:

  fields = ('email', 'first_name', 'last_name', 'middle_name','towns', 'phone',) 
    widgets = { 
        'towns': forms.Select(), 
    } 

我得到一个 DropDownList,但如果我选择一个城镇并提交表单,它会返回一个错误:

[Enter a list of values] 

你能帮我解决这个问题吗?

请您参考如下方法:

你可以把这个方法放在form.py中:

class YourForm(forms.ModelForm): 
   ... 
   def clean_towns(self): 
      return [self.cleaned_data['towns']]