仮に:私はCarというモデルを持っています。これは1人のユーザーに関連しています。私の懸念はデフォルトのDjango管理者の範囲内です。ドロップダウンを使用してユーザーを車に割り当てます(これはデフォルトのDjangoの動作なので、言われています)。
ドロップダウンで数千人以上のユーザーを選択するとどうなりますか。管理者はこれに対処しますか?もしそうなら、どのように対処しますか?
仮に:私はCarというモデルを持っています。これは1人のユーザーに関連しています。私の懸念はデフォルトのDjango管理者の範囲内です。ドロップダウンを使用してユーザーを車に割り当てます(これはデフォルトのDjangoの動作なので、言われています)。
ドロップダウンで数千人以上のユーザーを選択するとどうなりますか。管理者はこれに対処しますか?もしそうなら、どのように対処しますか?
デフォルトの管理UIには、ドロップダウンリストが表示されます。このオプションを使用しraw_id_fields
て、検索ボタンを介してポップアップウィンドウを表示します。このウィンドウでは、リンクされたオブジェクトを検索して選択できます。ドキュメントを参照してください:https ://docs.djangoproject.com/en/1.11/ref/contrib/admin/#django.contrib.admin.ModelAdmin.raw_id_fields
デフォルトでは、Djangoの管理者はForeignKeyであるフィールドに選択ボックスインターフェース()を使用します。ドロップダウンに表示する関連するすべてのインスタンスを選択する必要があるというオーバーヘッドを発生させたくない場合があります。
django-grappelli
管理インターフェースを強化するアプリであるを調べることができます。ドキュメントForeignKey
では、を使用したまたはManyToMany
関係のオートコンプリートについて説明していraw_id_fields
ます。
django-select2プラグインhttps://github.com/applegrew/django-select2を使用できます。
あなたは次のようなことをすることができます:
from django_select2 import AutoModelSelect2Field
class CategoryChoices(AutoModelSelect2Field):
queryset = models.Category.objects
search_fields = ['name__icontains', 'code__icontains']
class NewsAdminForm(forms.ModelForm):
category = CategoryChoices()
class Meta:
model = models.News
exclude = ()
# register in admin
class NewsAdmin(admin.ModelAdmin):
form = NewsAdminForm
admin.site.register(News, NewsAdmin)