【发布时间】:2014-09-30 18:57:03
【问题描述】:
我的一个奇怪愿望是我想让管理页面中的filter_horizontal ManytoMany 选择框最多只能选择三个项目。第四个项目不应该是可选的。
这怎么可能?我正在考虑覆盖对象的保存方法,但这似乎太“晚”了一步,在保存过程之前有什么方法可以做到这一点?就像我可能没有听说过的管理类字段或模型字段上的任何属性一样?
感谢任何帮助
【问题讨论】:
标签: django django-models django-admin
我的一个奇怪愿望是我想让管理页面中的filter_horizontal ManytoMany 选择框最多只能选择三个项目。第四个项目不应该是可选的。
这怎么可能?我正在考虑覆盖对象的保存方法,但这似乎太“晚”了一步,在保存过程之前有什么方法可以做到这一点?就像我可能没有听说过的管理类字段或模型字段上的任何属性一样?
感谢任何帮助
【问题讨论】:
标签: django django-models django-admin
你可以使用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,它指向 第二个框。
希望对你有帮助
【讨论】: