Я думаю, что причина проста, т. Е. Только с BaseForm
вы не можете определять поля, используя декальтрационный синтаксис, т.е.
class MyForm(Form):
field_xxx = form.TextField(...)
field_nnn _ form.IntegerField(...)
Для такой вещи, для работы которой должен быть метакласс DeclarativeFieldsMetaclass
, который установлен только в форме, они сделали это, потому что
Это отдельный класс от BaseForm
чтобы абстрагировать путь,
self.fields указывает
так что теперь вы можете написать класс WierdForm, в котором поля могут быть определены, может быть некоторым странным способом, например. передача параметров в объект класса, точка - это все, что API находится в BaseForm
, а класс Form
просто предоставляет легко определяемые поля.
Сводка : IMO django предпочел ввести другой уровень, чтобы при необходимости можно было реализовать декларацию полей другого типа, по крайней мере, чтобы отделить неосновную функциональность форм.