Django管理员下载了1000个用户

Pro*_*eus 9 django django-admin

假设:我有一个名为Car的模型,它与一个用户有关.我担心的是默认的Django Admin.我通过下拉列表将用户分配给汽车(这是默认的Django行为,所以我被告知).

如果我有1000多个用户可以从下拉菜单中选择,会发生什么.管理员是否处理此问题,如果是这样的话?

Mar*_*vin 9

默认管理UI显示下拉列表.使用该raw_id_fields选项可通过搜索按钮获取弹出窗口.此窗口允许您查找并选择链接对象.请参阅文档:https://docs.djangoproject.com/en/1.11/ref/contrib/admin/#django.contrib.admin.ModelAdmin.raw_id_fields

默认情况下,Django的管理员使用选择框接口()来表示ForeignKey字段.有时您不希望产生必须选择要在下拉列表中显示的所有相关实例的开销.


Ran*_*u R 6

您可以使用 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)
Run Code Online (Sandbox Code Playgroud)

  • 来自新的 `django-select2` 存储库:“Django 的管理通过 [autocomplete_fields](https://docs.djangoproject.com/en/stable/ref/contrib/admin/#django.contrib) 提供了对 Select2 的内置支持。 admin.ModelAdmin.autocomplete_fields) 功能。” (3认同)

msc*_*msc 5

您可以查看django-grappelli,这是一个增强管理界面的应用程序。该文档描述了ForeignKeyManyToMany关系的自动完成,使用raw_id_fields.