一个更好的Django管理员很多很多字段小部件

我发现Django Admin的默认小部件使用起来很麻烦。它是HTML选择元素,如果你有很多“其他”模型的对象,那么实际上找到要与“这个”对象关联的“其他”对象是非常不切实际的。而且,如果您有很多“其他”模型的对象,它似乎甚至会减慢管理页面的呈现速度。models.ManyToManyField

我知道我可以构建自己的自定义管理小部件,并将其应用于我认为合适的管理小部件,但是是否有任何预构建的小部件可供我使用?在我的梦中,我想象一个自动完成文本输入HTML小部件。这在Django管理框架中是否实用/可能?ManyToManyFields

谢谢。


答案 1

尝试使用 admin 类上的属性,例如:filter_horizontal

class SomeModelAdmin(admin.ModelAdmin):
    filter_horizontal = ('users',)

正如文档中提到的,“将ManyToManyField添加到此列表中将使用一个漂亮而不显眼的JavaScript'过滤器'接口,允许在选项中进行搜索”。filter_vertical以略微不同的布局做同样的事情。


答案 2

你可以尝试在 admin 中使用原始 id 和 django 文档:http://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.raw_id_fields

如果您正在寻找具有自动完成功能的东西,则可能需要将此视为起点 http://code.djangoproject.com/wiki/AutoCompleteSolutions

最后是一个非常简单的内联示例:

models.py

class SomeModel(models.Model):
    users = models.ManyToMany(User)

admin.py:

class SomeModelAdmin(admin.ModelAdmin):
    raw_id_fields = ("users",)