Django admin:将选定的相关字段框更改为自动完成

时间:2012-03-20 19:38:44

标签: django autocomplete django-admin foreign-keys

我们有一些将用户作为外键的模型。但是在我们的系统中有大约25000个用户,找到我们需要的用户有点令人生畏。

有没有比选择框好的解决方案?也许是自动完成,所以我们可以开始输入用户名/地址?或者只是一个搜索框?当为这些对象切换相关用户时,25000未分类的用户变得越来越难。

即使只是将其设置为按用户名对用户进行排序也会有所帮助。

5 个答案:

答案 0 :(得分:25)

我遇到了这个问题,我的结论是使用自动填充字段代替。在大多数情况下,它的效果非常好。唯一的问题是当你有很多条目大致相同时。例如,在您的情况下,如果您输入 Robert 作为名称,并且列表中有数百个 Robert 条目......

有很多应用程序会向Django管理员添加自动填充功能:

我最喜欢的是最后一个。它编写得很好,它可以与管理员和管理员外部一起使用,它可以与ManyToManyFields,ForeignKeyFields,CharFields等一起使用。

我为我的客户做了一个fork这个项目,增加了一些像ForeignKeyRawIdWidget这样的查找(放大镜)按钮的细节。

答案 1 :(得分:21)

Django 2.0管理员有autocomplete built in,只需在autocomplete_fields课程中设置ModelAdmin字段即可。例如

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

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

答案 2 :(得分:5)

最简单的开箱即用解决方案是将字段添加到ModelAdmin的{​​{3}} - 然后您会看到一个弹出窗口,您可以在其中使用内置搜索/过滤和分页控制,以查找和选择您所追求的对象。

如果你真的想要自动完成,其他答案会给你一个合理的起点。

答案 3 :(得分:4)

您可以使用django.contrib.admin.widgets中的ForeignKeyRawIdWidget。它将FK关系呈现为一个输入,并在旁边放置一个小按钮,呈现可搜索的弹出窗口。

答案 4 :(得分:0)

There is an app for that(django-autocomplete)。