2014-09-30 3 views
0

Одно из моих странных пожеланий - это то, что я хочу сделать filter_horizontal. Поле выбора ManytoMany на странице администратора доступно только для трех элементов. четвертый элемент не следует выбирать.django admin - manytomany filter_horizontal - ограничение до трех вариантов

как это возможно? Я думаю об переопределении метода сохранения объекта, но это кажется слишком «поздним» шагом каким-то образом, есть ли способ сделать это перед сохранением процесса? как любой атрибут поля поля администратора или поля модели, о котором я, возможно, не слышал?

любая помощь ценится

ответ

1

Вы можете достичь его с помощью JQuery, это позволит сэкономить все накладные расходы стороне сервера;

в вашей модели администратора добавить следующее:

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

Положите limitchoice.js в статики/ папку (кредит: 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"); 
    } 
});​​​​​​​​​​ 

Обратите внимание на идентификатор вашего manytomany поля id_MODELNAME_to wich указывает на второй ящик.

Надеюсь, это поможет

Смежные вопросы