我试图找出如何自动完成光文档中做到这一点的方法应用过滤器内部MyModelAutocomplete
。我想出了如何,但不是没有一点挖掘,所以希望这是有帮助的。
在autocomplete_light_registry.py文件,填写“姓名”和“选择”参数:
#myapp/autocomplete_light_registry.py
autocomplete_light.register(MyModel,
#... Other Parameters ...
name = 'SpecialMyModelAutocomplete',
choices = YourQuerySetHere, #e.g. MyModel.objects.filter(...)
)
的默认名称为“MyModelAutocomplete”所以,如果你有一个以上的注册自动完成的模型,你需要指定你想使用哪一个(否则它使用注册表中的第一个,而不是默认的)。
要指定,请使用(来自docs)的“autocomplete_names”“field_name:AutocompleteName的字典覆盖将用于字段的默认自动填充。”在我的情况下,我在django管理员中使用它。
#myapp/admin.py
class MyModelAdminForm(autocompletelight.ModelForm):
class Meta:
model = MyModel
autocomplete_names = {'field_name':'SpecialMyModelAutocomplete'}
请注意,您不需要包括要使用默认的自动完成功能在autocomplete_names任何领域。顺便提一句,“autocomplete_exclude”和“autocomplete_fields”在这里也很有意思,并且类似于ModelAdmin中的“字段”和“排除”,以指定使用自动完成包含/排除哪些字段。
增加: 您也可以在modelform_factory使用 “autocomplete_names”:
form = autocomplete_light.modelform_factory(MyOtherModel,autocomplete_names={MyFieldName:'MyModelAutocomplete'}) #where MyFieldName is a ForeignKey to MyModel
从文档:
autocomplete_light.forms.modelform_factory(model,autocomplete_fields=None,autocomplete_exclude=None,autocomplete_names=None,registry=None,**kwargs)
感谢您给我们的贡献,它真的把我推到正确的方向。我已经使用了以下文档部分:[高级基础](https://django-autocomplete-light.readthedocs.org/en/docs_rewrite/cookbook.html#high-level-basics),[autocomplete_names](https ://django-autocomplete-light.readthedocs.org/en/latest/api.html?highlight = modelform_factory#autocomplete_light.forms.ModelForm.autocomplete_names)and [model_form_factory](http://django-autocomplete-light.readthedocs。组织/ EN /最新/ api.html?突显= modelform_factory#autocomplete_light.forms.modelform_factory) – raratiru