Django - 多对多的选择器小部件在哪里?

时间:2017-12-31 05:41:03

标签: django widget many-to-many many-to-one picker

对于表A的每一行,我希望能够从表B中添加一行或多行。

Django管理员有一个例子,用户权限选择器 - 我附加了一个屏幕截图。

Django picker for user permissions, a many to many picker

每个用户都可以拥有任意数量的权限。权限从左侧开始。添加一个时,它会向右移动。你可以来回移动它们。

这就是我想要的两个自己的模型。我如何获得这个小部件?

我首先想到我需要一个多对一的小部件,但进一步思考,我认为这是很多很多。用户获得权限后,该权限仍可供其他用户使用。用户可以拥有多个权限;对于特定权限,可以向多个用户授予相同的权限 - 必须是多对多。我的两张桌子的工作方式相同。

我需要添加和更新用户可访问的记录页面上的小部件;我在管理页面上不需要它。 (我很幸运能够在用户管理页面上找到我需要的完美示例。)

2 个答案:

答案 0 :(得分:2)

admin.py

class your_model_admin(admin.ModelAdmin):
    ...
    filter_horizontal = ('field_name',) 

这会使小部件与permission字段的field_name字段相同

答案 1 :(得分:0)

我把票证放入code.djangoproject.com。

答案:

模块在那里,您可以使用它们。

  

您可以使用

中的小部件      

来自django.forms.widgets导入SelectMultiple

     

可以从

访问filter_horizo​​ntal / filter_vertical小部件      

来自django.contrib.admin.widgets导入FilteredSelectMultiple

https://code.djangoproject.com/ticket/28993#comment:1

但是,这些模块不能在表单上使用,因为它们依赖于javascript并且无法保证向后兼容性。

https://code.djangoproject.com/ticket/28993#comment:2

???