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')
)
我正在使用 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')
)