【问题标题】:Django multi-select widget?Django多选小部件?
【发布时间】:2010-12-14 11:33:46
【问题描述】:

Django 管理站点使用了一个非常酷的小部件:

如何在我自己的应用程序中使用这个小部件?我没有看到类似的东西listed here

【问题讨论】:

    标签: django forms django-forms


    【解决方案1】:

    来自docs

    Django Admin 应用程序为日历、过滤选择等定义了许多自定义小部件。这些小部件定义媒体要求,Django 管理员使用自定义小部件代替 Django 默认值。管理模板将仅包含在任何给定页面上呈现小部件所需的那些媒体文件。

    如果您喜欢 Django Admin 应用程序使用的小部件,请随意在您自己的应用程序中使用它们!它们都存储在 django.contrib.admin.widgets 中。

    在这种情况下,您需要 FilteredSelectMultiple 小部件。要使用它,请将小部件应用于表单字段,如下所示:

    my_field = forms.ModelMultipleChoiceField(queryset=MyModel.objects.all(), widget=FilteredSelectMultiple("verbose name", is_stacked=False))
    

    确保在模板中包含表单media,因为它需要包含一些 JS 文件。

    【讨论】:

    • Hrm... 由于某种原因不想工作。所有的 JS 都在那里,但由于某种原因它没有转换选择框。 7src.com/~mnb2/a3/access
    • 这是一个疯狂的猜测,但请尝试将您的第二个参数(is_stacked 变量)设置为 False。查看代码,看起来可能会影响两个框的显示。不幸的是,我现在无法自己测试它,所以我只是在查看代码嘿嘿:)
    • 没关系。发现了问题。它还需要<script type="text/javascript" src="/~mnb2/a3/admin/jsi18n/"></script>form.media 不包含它。
    • 哦,我还要提一下,您需要以超级用户身份登录才能访问该文件!我建议保存文件并包含它。
    • @mpen,<script type="text/javascript" src="/~mnb2/a3/admin/jsi18n/"></script> 中到底是什么?为什么它没有指向特定的.js 文件?
    猜你喜欢
    • 2012-09-02
    • 2023-03-07
    • 2020-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-10
    • 2022-01-26
    • 1970-01-01
    相关资源
    最近更新 更多