我们有一些将用户作为外键的模型。但是在我们的系统中有大约25000个用户,找到我们需要的用户有点令人生畏。
有没有比选择框好的解决方案?也许是自动完成,所以我们可以开始输入用户名/地址?或者只是一个搜索框?当为这些对象切换相关用户时,25000未分类的用户变得越来越难。
即使只是将其设置为按用户名对用户进行排序也会有所帮助。
答案 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)。