django-autocomplete-light:使用MultipleChoiceWidget进行逗号选择

时间:2013-04-26 10:48:02

标签: python django django-autocomplete-light

如何使用 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)

autocomplete_m2m

自动完成功能正常,但您必须单击所需的标记。我正在寻找一个解决方案,如何使用空格键或逗号等键来选择条目。

1 个答案:

答案 0 :(得分:2)

如果您希望条目以逗号分隔,则需要使用autocomplete_light.TextWidget。但是,它不适用于关系,它只适用于CharField之类的。

MultipleChoiceWidget维护一个理智的隐藏选择元素。 select需要包含<option> value=the_foreign_key。如果此选择由具有逗号分隔的对象标题列表的输入维护,则用户可以通过修改先前输入的对象名来对其进行检查 - 更不用说在选择时对象名称更改将同时检查自动完成