【问题标题】:Different ManyToManyField widget不同的 ManyToManyField 小部件
【发布时间】:2009-04-19 12:00:28
【问题描述】:

The default django 1.0.2 ManyToManyField widget (a multi-select) is difficult to use when there are a lot of things in the select box.是否有另一个可用的小部件在文本区域中提供逗号分隔的 id 列表?如果这不可用,我需要做什么来编写一个,并让它显示在 ModelForm.as_p() 和管理站点中?

【问题讨论】:

    标签: django django-models django-forms


    【解决方案1】:

    如果没有现有的小部件可以满足您的需求(我认为没有),那么您需要编写自己的小部件。不幸的是,Django 文档没有向您展示如何执行此操作,但通过查看源代码 forms/widgets.py 复制现有小部件并对其进行修改并不难弄清楚。

    【讨论】:

    【解决方案2】:

    我相信在 manytomanyfield 上设置 raw_id_fields 实际上会输出一个带有逗号分隔的 id 列表的 TextInput 小部件。 您可以在 admin.py 中的相应 ModelForm 中覆盖它并在其上强制一个 TextArea 小部件。

    【讨论】:

    • 看起来这仅适用于管理应用程序。谢谢,但对这个问题没有用。
    【解决方案3】:

    在管理员中,您可以使用过滤水平和/或过滤垂直

    class MyModelAdmin(admin.ModelAdmin):
        filter_horizontal = ['many_to_many_field_name']
        filter_horizontal = ['another_many_to_many_field_name']
    

    doc

    【讨论】:

    • 谢谢,但大体相同。这让我找到了 ManyToManyRawIdWidget,它最接近我想要使用的东西。我想我将从 ManyToManyRawIdWidget 作为基础来构建我需要的东西。
    猜你喜欢
    • 1970-01-01
    • 2019-10-05
    • 2011-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-02
    相关资源
    最近更新 更多