18

既存のプロジェクトでdjango-autocomplete-lightを使用する方法を理解しようとしています。これは、私がすでに通常のModelChoiceFieldsを使用しているdjangoの優れたオートコンプリートソリューションのようです。

それで、IDと名前を持つMyModelという名前のモデルがあるとしましょう。私が知りたいのは、同じ機能を提供するフォームウィジェットを作成するための最も簡単な方法です。

mymodel = forms.ModelChoiceField(required = True、queryset = ships.models.Authority.objects.all()、) 

そのため、selec.tを使用せずに、MyModelのインスタンスを選択するために、そのウィジェットを任意のフォームに追加できます。

それを行うために必要な手順は何ですか?INSTALLED_APPSに「autocomplete_light」を追加しました

url(r'autocomplete/', include('autocomplete_light.urls')),

urls.pyと

import autocomplete_light
autocomplete_light.autodiscover()

admin.autodiscover()

しかし、私は次に何をすべきか混乱しています:(

私がすでに完全に読んだドキュメントで私を指さないでください。

4

1 に答える 1

20

ModelChoiceFieldのデフォルトのウィジェットの選択

このフォームフィールドはウィジェットを指定しないため、デフォルトでselectウィジェットを次のように使用する必要があります

mymodel = forms.ModelChoiceField(
                required=True,
                queryset=ships.models.Authority.objects.all(),
          ) 

これが、オートコンプリートの代わりに選択フィールドが表示される理由です。

ウィジェットの使用に関するdjangoドキュメントを読みましたか?

代わりにautocomplete_light.ChoiceWidgetを使用してください

あなたがしなければならないのはウィジェットを指定することです:

mymodel = forms.ModelChoiceField(
            required=True,
            queryset=ships.models.Authority.objects.all(),
            widget=autocomplete_light.ChoiceWidget('AutocompleteName')
          ) 

オートコンプリートの名前がわからない場合は、staffとしてログインしてを開きhttp://yoursite/autocomplete/ます。

jqueryが正しくロードされていることと、オートコンプリートライトの静的ファイルもロードされていることを確認してください。

代替案

FTR:またはのようなショートカットautocomplete_light.modelform_factoryを使用して別の方法が可能です。APIドキュメントは無難ですが、ソースコードを読むことに勝るものはありません。autocomplete_light.modelform_factoryautocomplete_light.get_widgets_dict

全体として、ModelFormを使用している場合は、get_widgets_dictショートカットを使用するのが最も簡単だと思います。

隠しドキュメント

クックブックはdocs_rewriteブランチで進行中の作業であるため、見つからなかった可能性がありますが、「高レベルの基本」の2番目の部分では、ウィジェットの使用例をいくつか示します。

ドキュメントに問題があることはわかっているので、docs_rewriteブランチです。現在、私はモバイルサポートの改善に注力しています。

于 2013-01-23T12:16:17.557 に答える