【问题标题】:django admin - manytomany filter_horizontal - limit to three choicesdjango admin - manytomany filter_horizo​​ntal - 限制为三个选项
【发布时间】:2014-09-30 18:57:03
【问题描述】:

我的一个奇怪愿望是我想让管理页面中的filter_horizontal ManytoMany 选择框最多只能选择三个项目。第四个项目不应该是可选的。

这怎么可能?我正在考虑覆盖对象的保存方法,但这似乎太“晚”了一步,在保存过程之前有什么方法可以做到这一点?就像我可能没有听说过的管理类字段或模型字段上的任何属性一样?

感谢任何帮助

【问题讨论】:

    标签: django django-models django-admin


    【解决方案1】:

    你可以使用jquery来实现,这样可以节省所有的服务器端开销;

    在您的模型管理员中添加:

     class Media:
            js = ('PATHA_AFTER_STATIC/limitchoice.js', )
    

    将您的 limitchoice.js 放入 statics/ 文件夹(归功于:https://stackoverflow.com/a/2046293/288387

    $("id_MODELNAME_to").on("change", "option", function () {
        if ( 3 <= $(this).siblings(":selected").length ) {
            $(this).removeAttr("selected");
            alert("Only 3 choices allowed");
        }
    });​​​​​​​​​​
    

    请注意您的多对多字段 id_MODELNAME_to 的 id,它指向 第二个框

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2019-08-15
      • 2015-09-08
      • 2011-07-17
      • 2012-01-31
      • 2013-08-12
      • 2019-03-07
      • 2012-04-24
      • 1970-01-01
      相关资源
      最近更新 更多