【问题标题】:Django admin dropdown of 1000s of users1000 名用户的 Django 管理员下拉菜单
【发布时间】:2013-02-16 17:08:52
【问题描述】:

假设:我有一个名为 Car 的模型,它与一个用户相关。我担心的是默认的 Django Admin。我通过下拉菜单将用户分配给汽车(这是默认的 Django 行为,所以有人告诉我)。

当我在下拉菜单中有 1000 多个用户可供选择时会发生什么。管理员是否会处理这个问题,如果是,如何处理?

【问题讨论】:

标签: django django-admin


【解决方案1】:

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

默认情况下,Django 的 admin 使用一个选择框界面 () 是外键的字段。有时你不想招致 必须选择要显示的所有相关实例的开销 下拉菜单。

【讨论】:

  • 那么这是否提供了查找功能?管理员用户不知道 ID?
  • 是的,输入旁边有一个搜索图标,可用于查找 id。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    您可以使用 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)
    

    【讨论】:

    • 来自新的django-select2 repo:“Django 的管理员通过autocomplete_fields 功能内置了对 Select2 的支持。”
    猜你喜欢
    • 2013-06-22
    • 1970-01-01
    • 2012-11-16
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    • 2020-05-05
    • 2017-01-04
    • 2018-03-09
    相关资源
    最近更新 更多