класс Meta VS поля формы в Django - PullRequest
0 голосов
/ 08 октября 2019

Я изучаю формы Django из этого примера. Когда я запускаю свой сервер, я получаю django.core.exceptions.ImproperlyConfigured: Creating a ModelForm without either the 'fields' attribute or the 'exclude' attribute is prohibited (решено здесь ). Используя класс Meta все работает. Объясните, пожалуйста, могу ли я использовать эти оба подхода с Django==2.2.6 и их плюсы и минусы.

1 Ответ

1 голос
/ 08 октября 2019

После Django 1.8 требовалось, чтобы формы явно указывали, какие поля они хотели бы отобразить в классе Meta, поэтому вам определенно нужно сделать это в 2.2.6.

fields - это включающий способ перечисления полей. Если вы явно хотите указать, какие поля включены в форму, вы должны указать их здесь. Это означает, что если вы когда-нибудь измените свою модель, новые поля в модели не будут автоматически добавлены в форму, если вы не установите поля в __all__

exclude, что неудивительно противоположно этому. Это означает, что форма включает в себя все поля, кроме тех, которые явно указаны в исключении. Если вы измените свою модель, новые поля будут добавлены в форму, если вы не измените то, что находится в exclude.

Различия не велики в великой схеме вещей. Это зависит только от того, хотите ли вы явно указать, что включено или что исключено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...