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