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

Django管理员:将相关字段的选定框更改为自动完成,django,autocomplete,django-admin,foreign-keys,Django,Autocomplete,Django Admin,Foreign Keys,我们有一些将用户作为外键的型号。但是,我们的系统中有大约25000个用户,要找到我们需要的用户有点让人望而生畏 有没有比选择框更好的解决方案?可能是自动完成,以便我们可以开始键入用户名/地址?或者只是一个搜索框?当切换这些对象的相关用户时,25000个未排序的用户越来越难 即使只是将其设置为按用户名对用户进行排序也会很有帮助。您可以使用from django.contrib.admin.widgets。它将FK关系呈现为一个输入,旁边有一个小按钮,显示一个可搜索的弹出窗口 django自动完成

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

有没有比选择框更好的解决方案?可能是自动完成,以便我们可以开始键入用户名/地址?或者只是一个搜索框?当切换这些对象的相关用户时,25000个未排序的用户越来越难


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

您可以使用from django.contrib.admin.widgets。它将FK关系呈现为一个输入,旁边有一个小按钮,显示一个可搜索的弹出窗口

django自动完成

我遇到了这个问题,我的结论是使用自动完成字段。它在大多数情况下都很有效。唯一的问题是,当您有很多条目基本相同时。例如,在您的例子中,如果键入Robert作为名称,列表中有几百个Robert条目

更新

正如在shuckc的回答中提到的,Django 2.0+管理与现在一样

对于较旧的Django或在管理旧答案之外使用

有许多应用程序将自动完成添加到Django管理员:

关于谷歌代码 提利昂 我最喜欢的是最后一个。它写得很好,可以与admin一起使用,也可以在admin之外使用,它可以与许多字段、ForeignKeyFields、CharFields等一起使用


我为我的客户做了这个项目的一部分,添加了一些细节,比如像ForeignKeyRawIdWidget这样的lookup loupe按钮。

最简单的开箱即用解决方案是将字段添加到ModelAdmin中,然后您将得到一个弹出窗口,您可以在其中使用内置的搜索/过滤和分页控件来查找和选择你要找的东西

如果您真的想要自动完成,其他答案为您提供了一个合理的起点。

Django 2.0 admin有,只需在ModelAdmin类上设置自动完成字段。e、 g

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

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

这似乎很热:可爱。。ThanksI想知道如果代码已经内置到Django 2中,是否有人知道在我们自己的视图中用户是否可以使用admin autocomplete。如果没有,人们在用什么。如果能在admin之外找到一种使用admin autocomplete的方法,那就太好了。有人能指出一个可能的用例吗?如果您使用的是旧的Django版本,它没有得到很好的支持的自动完成包-在这种情况下,它应该是您最喜欢的答案