autocomplete-light ドキュメント内でこれを行う方法を見つけようとしていました。私はその方法を理解しましたが、少し掘り下げる必要があるので、これが役立つことを願っています.
autocomplete_light_registry.py ファイルで、"name" および "choices" パラメーターを入力します。
#myapp/autocomplete_light_registry.py
autocomplete_light.register(MyModel,
#... Other Parameters ...
name = 'SpecialMyModelAutocomplete',
choices = YourQuerySetHere, #e.g. MyModel.objects.filter(...)
)
デフォルト名は「MyModelAutocomplete」であるため、モデルに複数の登録済みオートコンプリートを含める場合は、どれを使用するかを指定する必要があります (そうしないと、デフォルトではなく、レジストリの最初のものが使用されます)。
指定するには、「autocomplete_names」を使用します。これは、(ドキュメントから)「field_name の辞書: AutocompleteName を使用して、フィールドに使用されるデフォルトのオートコンプリートをオーバーライドします。」私の場合、django admin 内で使用しています。
#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)