如何处理django admin中具有大量记录的选择框

问题描述 投票:4回答:3

我的应用程序已经增长,以便django管理员的下降有100,000个选项。我甚至无法打开我的管理员,因为它在数据库上的负载,不要太提及我将无法在选择框中找到一个选项。

django有自动填充选项吗?

在django admin中处理大数据的最佳选择是什么?

python django django-admin bigdata
3个回答
5
投票

Django 2.0在管理站点上引入了一个名为autocomplete_fields的新功能,这对于具有外键的模型很有帮助。它用自动完成元素替换普通的<select>元素:

 class QuestionAdmin(admin.ModelAdmin):
     ordering = ['date_created']
     search_fields = ['question_text']

 class ChoiceAdmin(admin.ModelAdmin):
     autocomplete_fields = ['question']

这是元素的屏幕截图:

Screenshot


3
投票

使用raw_id_fields,如下所示:

class SomeModelAdmin(admin.ModelAdmin):
    raw_id_fields = ('problematic_field', )

你可以在这里阅读更多相关信息:

https://docs.djangoproject.com/en/1.11/ref/contrib/admin/#django.contrib.admin.ModelAdmin.raw_id_fields

基本上 - 它将使用带有镜头图标的原始id字段更改选择框 - 这将打开另一个窗口进行更改。


3
投票

你的问题有很多解决方案,但我认为有两种方法可行:

  1. 如果您需要内置解决方案,而您不想涉及外部库,raw_id_fields可能会帮助您。这来自文档:

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

raw_id_fields是您要更改为ForeignKey或ManyToManyField的Input小部件的字段列表:

class ArticleAdmin(admin.ModelAdmin):
    raw_id_fields = ("newspaper",)
  1. 使用自动完成小部件。有大量的现有包,请参阅此list。小心看哪一个最近的提交,它会让你了解社区的意识。
© www.soinside.com 2019 - 2024. All rights reserved.