Django Autocomplete Light widget Select2Multiple returns 列表的字符串而不是值列表

Django Autocomplete Light widget Select2Multiple returns a string of a list instead of a list of values

我正在使用 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,因为此表单适用于尚未创建的对象。

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

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