假设:我有一个名为Car的模型,它涉及到一个用户。我关心的是默认的Django Admin。我通过一个下拉菜单将用户分配给一辆汽车(这是默认的Django行为,所以我被告知)。Django管理员下拉菜单的用户数为1000个
当我有1000多个用户从下拉菜单中选择时会发生什么。管理员处理这个问题,如果是这样的话?
假设:我有一个名为Car的模型,它涉及到一个用户。我关心的是默认的Django Admin。我通过一个下拉菜单将用户分配给一辆汽车(这是默认的Django行为,所以我被告知)。Django管理员下拉菜单的用户数为1000个
当我有1000多个用户从下拉菜单中选择时会发生什么。管理员处理这个问题,如果是这样的话?
管理仍然会显示默认选择框但是你要使用原始ID小部件,而不是通过raw_id_fields
选项的选择:https://docs.djangoproject.com/en/1.4/ref/contrib/admin/#django.contrib.admin.ModelAdmin.raw_id_fields
默认情况下,Django的管理使用选择框界面()for 是ForeignKey的字段。有时你不想因为必须选择所有相关实例而在 下拉列表中显示开销 。
你可以看看django-grappelli
,这是一个增强管理界面的应用程序。 documentation描述了ForeignKey
或ManyToMany
关系的自动完成,使用raw_id_fields
。
哇,多数民众赞成在知道。谢谢。 – Prometheus 2013-02-16 17:34:54
没问题,很高兴帮助 – msc 2013-02-16 19:28:21
您可以使用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)
那么,这提供了一个查找?管理员用户不会知道该ID? – Prometheus 2013-02-16 17:24:35
是的,输入旁边有一个搜索图标可用于查找ID。 – 2013-02-16 19:41:00