Django Autocomplete Light小部件Select2Multiple返回列表的字符串而不是值列表

时间:2018-04-03 09:31:57

标签: django jquery-select2 django-autocomplete-light

我使用Django Autocomplete Light小部件Select2Multiple作为标签的表单字段。在form.clean()中,相应的值是标记的pk列表的字符串,如下所示:

form.clean()['tags']: "['1','2']"

现在,我可以将其转换为整数列表并单独处理pk,但我觉得应该有一种更明显的方法来处理它。

forms.py中的相关字段:

tags = CharField(label='Tags',
                 max_length=50,
                 required=False,
                 widget=autocomplete.Select2Multiple(url='tag-autocomplete')
       )

PS:我无法使用ModelSelect2Multiple,因为此表单适用于尚未创建的对象。

1 个答案:

答案 0 :(得分:1)

forms.CharField不是为处理值列表而设计的。由于您选择的是模型实例,因此可以使用forms.ModelMultipleChoiceField

tags = forms.ModelMultipleChoiceField(label='Tags',
                 queryset=Tag.objects.all(),
                 max_length=50,
                 required=False,
                 widget=autocomplete.Select2Multiple(url='tag-autocomplete')
       )