【问题标题】:Django -- where is the many to many picker widget?Django——多对多选择器小部件在哪里?
【发布时间】:2017-12-31 05:41:02
【问题描述】:

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

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

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

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

我最初认为我需要一个多对一的小部件,但进一步思考,我认为这是多对多的。用户获得权限后,该权限仍可供其他用户使用。一个用户可以拥有多个权限;对于特定权限,可以将相同的权限授予多个用户——必须是多对多的。我的两个表的工作方式相同。

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

【问题讨论】:

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


    【解决方案1】:

    在你的admin.py

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

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

    【讨论】:

      【解决方案2】:

      我通过将票放入 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

      ???

      【讨论】:

        猜你喜欢
        • 2013-09-28
        • 2023-03-07
        • 1970-01-01
        • 2010-12-14
        • 2020-09-24
        • 1970-01-01
        • 1970-01-01
        • 2011-08-28
        • 2021-11-22
        相关资源
        最近更新 更多