一个更好的Django管理员ManyToMany Field Widget

Chr*_* W. 96 javascript django html-select django-admin

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

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

谢谢.

Bla*_*air 155

尝试filter_horizontal在管理类上使用该属性,例如:

class SomeModelAdmin(admin.ModelAdmin):
    filter_horizontal = ('users',)
Run Code Online (Sandbox Code Playgroud)

正如文档中所提到,"将ManyToManyField添加到此列表将改为使用一个漂亮的不显眼的JavaScript"过滤器"界面,允许在选项中进行搜索".filter_vertical做同样的事情,布局略有不同.

  • 优秀,它使许多人使用起来更加清晰 (2认同)

小智 7

您可以尝试在管理员中使用原始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)
Run Code Online (Sandbox Code Playgroud)

admin.py:

class SomeModelAdmin(admin.ModelAdmin):
    raw_id_fields = ("users",)
Run Code Online (Sandbox Code Playgroud)