django admin - manytomany filter_horizo​​ntal - 限制为三种选择

时间:2014-09-30 18:57:04

标签: django django-models django-admin

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

怎么可能?我正在考虑覆盖对象的save方法,但这似乎是某种程度上太“迟”的步骤,有没有办法在保存过程之前执行此操作?像管理类字段或模型字段中的任何属性,我可能没有听说过?

感谢任何帮助

1 个答案:

答案 0 :(得分: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指向第二个框

希望有所帮助