Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更好的Django管理多字段小部件_Javascript_Django_Django Admin_Html Select - Fatal编程技术网

Javascript 更好的Django管理多字段小部件

Javascript 更好的Django管理多字段小部件,javascript,django,django-admin,html-select,Javascript,Django,Django Admin,Html Select,我发现Django管理员的默认models.ManyToManyField小部件使用起来很麻烦。它是元素,如果您有很多“其他”模型的对象,那么实际查找要与“此”对象关联的“其他”对象是非常不切实际的。如果你有很多“其他”模型的对象,它甚至会减慢管理页面的呈现速度 我知道我可以构建自己的自定义管理小部件,并将其应用到我认为合适的许多域中,但是否有任何预构建的小部件可以替代?在我的梦中,我描绘了一个自动完成文本输入的HTML小部件。这在Django管理框架中是否可行 谢谢。您可以尝试在管理中使用原始

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

我知道我可以构建自己的自定义管理小部件,并将其应用到我认为合适的
许多域中,但是否有任何预构建的小部件可以替代?在我的梦中,我描绘了一个自动完成文本输入的HTML小部件。这在Django管理框架中是否可行


谢谢。

您可以尝试在管理中使用原始id。 和django文件:

如果您正在寻找具有自动完成功能的内容,您可能希望以此作为起点

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

models.py

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

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

尝试在您的管理类上使用
filter\u horizontal
属性,例如:

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

如中所述,“将ManyToManyField添加到此列表将使用一个漂亮、不引人注目的JavaScript“过滤器”界面,该界面允许在选项中进行搜索”。用稍微不同的布局做同样的事情。

我实际上没有玩过它,但我在别处找到了引用


它似乎正是我想要的。它不像
filter\u horizontal
那样加载相关对象的整个列表(不管有多少!)并向您提供一个选择器来选择其中的一些对象,而是提供一个搜索/筛选框,并使用typeahead/autocomplete调用来动态检索结果。这对于您可能有5000个用户并且希望在不等待5k
元素下载和呈现的情况下选择其中的3或4个用户来说是非常好的。

这是一个老问题,但我想在这里为像我一样发现这一点的人添加一个答案:这种情况正是Django内联管理员所需要的。具体地说,我使用带有原始id字段的表格行来处理选择过多的多对多关系


太好了!这听起来正是我要找的,我会尝试一下。它的工作,但如何使这个字段只读。我正在尝试只读字段=('users',)。但它以逗号分隔的单行显示。我想在换行符中显示…我担心我将不得不编写自己的小部件,但这是完美的!谢谢你;P