Django: Инжектирайте валидиране на формуляр на ModelForm, а не на Model

Въпрос: Има ли начин да се инжектира проверка на полето на формуляра на ModelForm вместо на Model?

Обосновка: Имам три ModelForm, които актуализират един и същ екземпляр Model, които имат условия по подразбиране за blank. Трябваше да проектирам три различни модела за всяка форма, но съм твърде далеч, за да направя промяна.

Моля за помощ!

Благодаря, Нийл


person Neel    schedule 10.08.2018    source източник
comment
Да, чрез прилагане на функциите clean_fieldname. Вижте: docs.djangoproject.com/en/2.0/ref/forms/validation   -  person Willem Van Onsem    schedule 10.08.2018
comment
Благодаря Вилем, работи перфектно!   -  person Neel    schedule 10.08.2018


Отговори (2)


ModelForm е вид форма (тъй като наследява от BaseForm), така че можете да използвате методи за проверка на полето на формуляр, за да го направите, защото методът clean() е наследен от BaseForm. Така че за поле с име foo използвате метода clean_foo(), за да извършите почистване

person leotrubach    schedule 10.08.2018

отговорът на leotrubach е правилният начин, просто искам да добавя, че документацията на django по темата е добро четиво.

person Jonas Vandermosten    schedule 10.08.2018