1

プロジェクトに自動生成されたDjango管理者を使用しています。結果は次のとおりです。

結果

「Professor」フィールドの場合、Djangoは自動的にドロップダウンリストを生成しましたが、少なくとも1000個の要素が含まれています。したがって、リストを「審判」に使用されるウィジェットなど、よりユーザーフレンドリーなものに置き換えたいと思います。このウィジェットでは、基本的に名前の最初の文字を入力するだけで、要素が下に表示されます。

その結果を得るためにadmin.pyまたはmodels.pyファイルを変更するにはどうすればよいですか?

4

3 に答える 3

2

admin.pyのraw_idフィールドにフィールドを追加してみてください。

class YourModelAdmin(admin.ModelAdmin):
    raw_id_fields=('professor', )

admin.site.register(YourModel, YourModelAdmin)

そのためには、かなりの検索ボタンが表示されます

于 2013-03-21T13:16:36.913 に答える
1

あなたは探している:

ModelAdmin.formfield_overrides

これは、管理者で使用するためのフィールドオプションの一部をオーバーライドするための手っ取り早い方法を提供します。formfield_overridesは、フィールドクラスを引数のdictにマッピングして、構築時にフィールドに渡す辞書です。

この例を見てください:

from django.db import models
from django.contrib import admin

# Import our custom widget and our model from where they're defined
from myapp.widgets import RichTextEditorWidget
from myapp.models import MyModel

class MyModelAdmin(admin.ModelAdmin):
    formfield_overrides = {
        models.TextField: {'widget': RichTextEditorWidget},
    }
于 2013-03-21T13:26:18.240 に答える
0

教授を1人だけ選ぶ必要がありますか、それとも多くの教授を選ぶ必要がありますか?モデルでのようなものを使用するため、ドロップダウンリストが生成さprofessor = models.ForeignKey(Professor)れます。ForeignKeyは単一の選択を意味しますが、ウィジェットの例は複数の選択を意味します。ですから、あなたの意図ははっきりしていません。ドロップダウンリストを使用して、最初の文字を入力してオプションを選択することもできます。

于 2013-03-21T13:19:17.083 に答える