如何使用 autocomplete_light.MultipleChoiceWidget 在表单中设置密钥选择?
我想通过鼠标点击选择它来使用逗号键intead来选择m2m字段的条目。我在docs中找到了相关段落,但我不明白如何构建它。
models.py
class MyModel(models.Model):
tag = models.ManyToManyField(Tag, blank=True, null=True)
class Tag(models.Model):
name = models.CharField(max_length=32, unique=True)
autocomplete_light_registry.py
autocomplete_light.register(Tag,
search_fields=['name'],
autocomplete_js_attributes={
'placeholder': 'Insert additional tags',
},
widget_js_attributes = {
'max_values': 3,
}
)
forms.py
tag = forms.ModelMultipleChoiceField(Tag.objects.all(),
widget=autocomplete_light.MultipleChoiceWidget('TagAutocomplete'),
required=False)
自动完成功能正常,但您必须单击所需的标记。我正在寻找一个解决方案,如何使用空格键或逗号等键来选择条目。
答案 0 :(得分:2)
如果您希望条目以逗号分隔,则需要使用autocomplete_light.TextWidget
。但是,它不适用于关系,它只适用于CharField
之类的。
MultipleChoiceWidget
维护一个理智的隐藏选择元素。 select需要包含<option>
value=the_foreign_key
。如果此选择由具有逗号分隔的对象标题列表的输入维护,则用户可以通过修改先前输入的对象名来对其进行检查 - 更不用说在选择时对象名称更改将同时检查自动完成