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

时间:2017-11-02 19:00:24

标签: python django django-admin bigdata

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

django有自动填充选项吗?

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

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分: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字段更改选择框 - 这会打开另一个窗口进行更改。

答案 2 :(得分:3)

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

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

    默认情况下,Django的管理员使用选择框界面()   ForeignKey的字段。有时你不想招致   必须选择要显示的所有相关实例的开销   下拉。

         

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

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