假设:我有一个名为Car的模型,它与一个用户有关。我担心的是默认的Django Admin。我通过下拉列表将用户分配给汽车(这是默认的Django行为,所以我被告知)。
当我在下拉列表中有1000个以上的用户可供选择时会发生什么。管理员是否处理此问题,如果是这样的话?
答案 0 :(得分:8)
默认管理界面显示下拉列表。使用raw_id_fields
选项通过搜索按钮获取弹出窗口。此窗口允许您查找并选择链接对象。请参阅文档:https://docs.djangoproject.com/en/1.11/ref/contrib/admin/#django.contrib.admin.ModelAdmin.raw_id_fields
默认情况下,Django的管理员使用选择框界面() ForeignKey的字段。有时你不想招致 必须选择要显示的所有相关实例的开销 下拉。
答案 1 :(得分:4)
您可以查看django-grappelli
,这是一款增强管理界面的应用。 documentation使用ForeignKey
描述了ManyToMany
或raw_id_fields
关系的自动填充功能。
答案 2 :(得分:4)
您可以使用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)