ManyToManyField使用选择小部件

时间:2015-06-05 13:00:16

标签: django django-forms manytomanyfield

我有一个具有ManyToMany字段的模型。它来自一个预定义模式的合法数据库。当我为该模型创建模型表单时,它使用Multi select字段来呈现ManyToMany字段。创建数据库的人想要一个选择字段(而不是多个)。

# models.py

class MyModel(models.Model):
    mtmfield = models.ManyToManyField(MyModel2)

# forms.py

class MyModelForm(ModelForm):

    class Meta:
        model = MyModel
        widgets = Select() #this is what I want.

使用select不允许我使用form.save()保存模型,因为它需要一个值列表。如果我绕过"它会工作吗?这通过覆盖我的模型表单的保存功能捕获在Selected中选择的MyModel2并手动保存它?

2 个答案:

答案 0 :(得分:0)

您可以考虑使用Select2。它可以显示为单个选择样式元素,但允许选择多个值。

答案 1 :(得分:-1)

只需将此功能添加到您的表单:

def clean_mtmfield(self):
    data = self.cleaned_data['mtmfield']
    return [data]