2013-02-16 59 views
5

假设:我有一个名为Car的模型,它涉及到一个用户。我关心的是默认的Django Admin。我通过一个下拉菜单将用户分配给一辆汽车(这是默认的Django行为,所以我被告知)。Django管理员下拉菜单的用户数为1000个

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

回答

6

管理仍然会显示默认选择框但是你要使用原始ID小部件,而不是通过raw_id_fields选项的选择:https://docs.djangoproject.com/en/1.4/ref/contrib/admin/#django.contrib.admin.ModelAdmin.raw_id_fields

默认情况下,Django的管理使用选择框界面()for 是ForeignKey的字段。有时你不想因为必须选择所有相关实例而在 下拉列表中显示开销 。

+0

那么,这提供了一个查找?管理员用户不会知道该ID? – Prometheus 2013-02-16 17:24:35

+0

是的,输入旁边有一个搜索图标可用于查找ID。 – 2013-02-16 19:41:00

4

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

+0

哇,多数民众赞成在知道。谢谢。 – Prometheus 2013-02-16 17:34:54

+0

没问题,很高兴帮助 – msc 2013-02-16 19:28:21

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)