我的一个奇怪的愿望是,我想让管理页面中的filter_horizontal
ManytoMany选择框最多只能选择三个项目。第四项不应该是可选择的。
怎么可能?我正在考虑覆盖对象的save方法,但这似乎是某种程度上太“迟”的步骤,有没有办法在保存过程之前执行此操作?像管理类字段或模型字段中的任何属性,我可能没有听说过?
感谢任何帮助
答案 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指向第二个框。
希望有所帮助