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

时间:2016-01-27 06:39:16

标签: python django many-to-many

我有 ManyToMany 关系用户 - > User_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]

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

1 个答案:

答案 0 :(得分:3)

您可以将此方法放在form.py:

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