1

如何使用autocomplete_light.MultipleChoiceWidget在表单中使用键选择?

我想通过使用逗号键而不是通过鼠标单击来选择 m2m 字段的条目。我在文档中找到了相关段落,但我不明白如何构建它。

模型.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,
                                        }
                )

表格.py

    tag = forms.ModelMultipleChoiceField(Tag.objects.all(),
    widget=autocomplete_light.MultipleChoiceWidget('TagAutocomplete'),
    required=False)

自动完成_m2m

自动完成工作正常,除了您必须单击所需的标签。我正在寻找一种解决方案,如何使用空格键或逗号等键选择条目。

4

1 回答 1

2

如果您想用逗号分隔条目,那么您需要使用autocomplete_light.TextWidget. 但是,它不适用于关系,它只适用CharField于等。

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

于 2013-04-26T21:35:29.777 回答