Сохраните у себя Описание биологически активной добавки Модельформ 30+ (Modelform 30+) Основано на официально утвержденных материалах и подготовлено для электронного издания справочника Видаль 2015 года, дата обновления: 2015.09.04 Владелец регистрационного удостоверения:ЭН. СИ. ДЕВЕЛОП, ООО (Россия) Произведено:ВНЕШТОРГ ФАРМА, ООО (Россия) или В-МИН+, ООО (Россия) Контакты для обращений:ЭН. СИ. ДЕВЕЛОП ООО (Россия) Лекарственная форма
Форма выпуска, упаковка и состав продукта Модельформ 30+Состав: Innovative complex ELEGREENALL (Инновационный комплекс ЭЛЕГРИНОЛ) (экстракт померанца горького 10%, экстракт мушмулы японской, псиллиум), форсколин 10%, псиллиум, аэросил 380, эмульгатор магниевая соль стеариновой кислоты (Е470). Состав желатиновой капсулы: желатин, краситель титана диоксид, краситель бриллиантовый черный, краситель азорубин*. * Содержит красители, которые могут оказывать отрицательное влияние на активность и внимание детей. Форма выпуска и упаковка Свойства Биологически активная добавка к пище MODELFORM 30+ содержит инновационный комплекс ELEGREENALL, который дополнительно усилен натуральными ингредиентами. Инновационный комплекс ELEGREENALL включает:
Для женщин после 30 лет инновационный комплекс ELEGREENALL дополнительно усилен натуральными ингредиентами:
Область применения продукта Модельформ 30+ Применение MODELFORM 30+ способствует:
MODELFORM 30+ содержит компоненты, обладающие мягким тонизирующим эффектом и способствующие регулированию усвоения жиров и углеводов, поступающих в организм с пищей, очищению организма от токсинов, попадающих извне и образующихся в процессе обмена веществ. Рекомендации по применению Взрослым по 1 капсуле в первой половине дня во время еды или после приема пищи, запивая достаточным количеством воды (200 мл). Продолжительность приема — 2 месяца. При необходимости прием можно повторить. Не является лекарством. Противопоказания
Условия реализацииРеализация населению через аптечную сеть и специализированные магазины, отделы торговой сети. Условия хранения продукта Модельформ 30+Хранить в сухом, защищенном от прямых солнечных лучей и недоступном для детей месте, при температуре не выше 25°С. Срок годности продукта Модельформ 30+Срок годности — 3 года. Перед применением рекомендуется проконсультироваться с врачом. Контакты для обращений
Сохраните у себя |
Модельформ 30+ 30 шт.
капсулыХарактеристики
- Форма выпуска
- Капсулы массой 370 мг, расфасованные по 15 шт. в блистере (в упаковке 2 блистера) — 30 шт в уп.
- Страна производителя
- Россия
- Производитель
- В-МИН+,ООО
- Бренд
- МОДЕЛЬФОРМ
- Хранить в защищённом от света месте
- Беречь от детей
Состав
- Innovative complex ELEGREENALL (Инновационный комплекс ЭЛЕГРИНОЛ) (экстракт померанца горького 10 %, экстракт мушмулы японской, псиллиум), форсколин 10 %, псиллиум
Описание
- Инновационный комплекс ELEGREENALL включает:
- — экстракт померанца горького — источник синефрина, который активизирует метаболизм, может подавлять аппетит, способствуя снижению массы тела. Стимулирует в организме термогенез, ускоряет процесс расщепления жиров — активирует жировой обмен. Обладает мягким тонизирующим действием: повышает активность, снимает усталость.
- — псиллиум — пищевые волокна, которые облегчают снижение массы тела. Они обеспечивают более длительное чувство насыщения, что позволяет сократить объем потребляемой пищи, способствуют сбалансированному усвоению жиров и углеводов, нормализации пищеварения, регулируют работу кишечника.
- — экстракт мушмулы японской содержит в большом количестве коросолиевую кислоту, калий, витамин С и провитамин А. В ходе проведенных экспериментов доказано влияние на улучшение обмена веществ, снижение уровня липидов, сахара в крови, что способствует снижению жировой массы тела.
- Для женщин после 30 лет инновационный комплекс ELEGREENALL дополнительно усилен натуральными ингредиентами:
- — форсколин — натуральное вещество, получаемое из растения сoleus forskohlii (колеус форсколии). Исследования показали, что экстракт колеуса форсколии активизирует процесс обмена веществ, уменьшает аппетит, способствует снижению жировой массы тела.
- — псиллиум — помимо наличия в комплексе ELEGREENALL, дополнительно введен в состав MODELFORM 30+ с целью повышения его способности оказывать положительное влияние на регулирование аппетита, пищеварение, а также для обеспечения его детоксицирующих свойств, а именно выведения из организма токсинов, попадающих извне и образующихся в процессе обмена веществ.
Показания
- Применение MODELFORM 30+ способствует:
- — снижению массы тела;
- — регулированию аппетита;
- — улучшению функционального состояния желудочно-кишечного тракта;
- — улучшению общего самочувствия;
- — снижению жировой массы тела (жировых отложений).
- MODELFORM 30+ содержит компоненты, обладающие мягким тонизирующим эффектом и способствующие регулированию усвоения жиров и углеводов, поступающих в организм с пищей, очищению организма от токсинов, попадающих извне и образующихся в процессе обмена веществ.
Противопоказания
- Индивидуальная непереносимость компонентов БАД, беременность, кормление грудью
- Перед применением рекомендуется проконсультироваться с врачом.
- Не является лекарством.
Способ применения и дозы
- Взрослым по 1 капсуле в первой половине дня во время еды или после приема пищи, запивая достаточным количеством воды (200 мл).
- Продолжительность приема — 2 месяца.
- При необходимости прием можно повторить
Температура хранения
- от 2℃ до 25℃
Организация, уполномоченная на принятие претензий
- Промомед ДМ ООО
- Россия
- www.promo-med.ru
- 129090, город Москва, Проспект Мира, дом. 13, строение 1,офис 107/2
- [email protected];
- 8(495) 640-25-28 доб.1901
Django ModelForm — создание формы из моделей
Django ModelForm — это класс, который используется для прямого преобразования модели в форму Django. Если вы создаете приложение, управляемое базой данных, скорее всего, у вас будут формы, которые тесно связаны с моделями Django. Например, модель и форма регистрации пользователя будут иметь одинаковое качество и количество полей модели и полей формы. Таким образом, вместо того, чтобы создавать избыточный код, чтобы сначала создать форму, а затем сопоставить ее с моделью в представлении, мы можем напрямую использовать ModelForm. Он принимает в качестве аргумента имя модели и преобразует его в форму Django. Мало того, ModelForm предлагает множество методов и функций, которые автоматизируют весь процесс и помогают устранить избыточность кода.
Как преобразовать модель в форму Django?
Чтобы объяснить работу проекта, мы будем использовать проект geeksforgeeks , создадим модель и сопоставим ее с формами Django.
Обратитесь к следующим статьям, чтобы узнать, как создать проект и приложение в Django.
- Как создать базовый проект с помощью MVT в Django?
- Как создать приложение в Django?
Теперь, когда у нас есть готовый проект, создайте модель в geeks/models.py,
Python3
= 200 ) | 9 9031. Перейдите в файл geeksforgeeks/settings.py и добавьте приложение для гиков в список INSTALLED_APPS. Если мы выполним миграцию до этого шага, появится сообщение о том, что изменения не внесены.
9005 |
Эта форма принимает два аргумента поля или исключить .
- поля – Настоятельно рекомендуется явно указать все поля, которые должны быть отредактированы в форме с помощью атрибута fields. Невыполнение этого требования может легко привести к проблемам с безопасностью, когда форма неожиданно позволяет пользователю устанавливать определенные поля, особенно когда в модель добавляются новые поля. В зависимости от того, как отображается форма, проблема может быть даже не видна на веб-странице. Установите для атрибута fields специальное значение ‘__all__’ , чтобы указать, что должны использоваться все поля в модели.
- exclude – Установите для атрибута exclude внутреннего метакласса ModelForm список полей, которые необходимо исключить из формы. Например:
класс PartialAuthorForm(ModelForm): Мета класса: модель = Автор exclude = ['title']
Наконец, чтобы завершить нашу структуру MVT, создайте представление, которое будет отображать форму и напрямую сохранять ее в базе данных. В geeks/views.py
Python3
|
INTAL AWALL, AWLL AWALE, AWLL AWALE, AWLL AWALE, AWLL AWALE, AWLL AWAL, AWLL AWAL, AWLL AWAL, теперь. :8000/, Теперь вы можете видеть, что каждое поле модели сопоставляется с полем формы и отображается соответствующим образом. Сопоставления полей обсуждаются далее в этой статье. Итак, теперь давайте попробуем ввести данные в форму и проверить, сохраняются ли они в базе данных.
Нажмите «Отправить», и Бинго форма автоматически сохранится в базе данных. Мы можем проверить это по адресу http://localhost:8000/admin/geeks/geeksmodel/.
Типы полей
Сгенерированный класс Form будет иметь поле формы для каждого указанного поля модели в порядке, указанном в атрибуте fields. Каждое поле модели имеет соответствующее поле формы по умолчанию. Например, CharField в модели представлен как CharField в форме. Модель ManyToManyField представлена как MultipleChoiceField. Вот полный список конверсий:
Model Field | Form Field |
---|---|
AutoField | Not represented in the form |
BigAutoField | Not represented in the form |
BigIntegerField | IntegerField with min_value set to - 9223372036854775808 и max_value равным 9223372036854775807. |
BinaryField | CharField, если для параметра editable установлено значение True в поле модели, в противном случае оно не представлено в форме. |
BooleanField | BooleanField или NullBooleanField, если null=True. |
CharField | CharField с max_length, установленным на max_length поля модели, и empty_value, установленным на None, если null = True. |
DateField | DateField |
DateTimeField | DateTimeField |
DecimalField | DecimalField |
DurationField | DurationField |
EmailField | EmailField |
FileField | FileField |
FilePathField | FilePathField |
FloatField | FloatField |
ForeignKey | ModelChoiceField |
ImageField | ImageField |
IntegerField | IntegerField |
IPAddressField | IPAddressField |
GenericIPAddressField | GenericIPAddressField |
ManyToManyField | ModelMultipleChoiceField |
NullBooleanField | NullBooleanField |
PositiveIntegerField | IntegerField |
PositiveSmallIntegerField | IntegerField |
SlugField | Слагфилд |
SmallAutoField | Not represented in the form |
TextField | CharField with widget=forms. Textarea |
TimeField | TimeField |
URLField | URLField |
Django model form structure, опции и сопоставление полей
В предыдущих двух главах вы узнали, как модели Django используются для перемещения данных между реляционная база данных и проект Django. Хотя это основное предназначение моделей Django, есть еще один важный набор функциональные возможности, выполняемые моделями Django, которые не связаны напрямую в базу данных.
В этой главе вы узнаете, как для создания форм Django, отделяющихся от моделей Django, процесс, который еще больше расширяет принцип DRY Django (не повторяйте себя). Вы узнаете, как модель Django может создать форму Django, включая его поля, проверки, а также сохранять свои данные в база данных, и все это без написания многих логик формирования форм описано в главе 6.
Далее вы узнаете о Django представления на основе классов с моделями. Хотя вы можете продолжать использовать представление Django техники, описанные в главе 2, — точно так же, как техники форм в глава 6 — твердо разобравшись с моделями Django, вы сможете продолжить применить принцип Django DRY к представлениям. Вы научитесь создавать представления на основе классов для выполнения операций модели CRUD, в свою очередь, уменьшение количества логики, необходимой для включения операций модели CRUD в представления.
модели Django представляют
стандартный способ перемещения данных в базу данных и из нее. Но так как вы
изученный в предыдущих двух главах, фаза движения
данные в базу данных и из базы данных требуют, чтобы вы программно
манипулировать записями модели (например, методы внутреннего представления в views.py
файла) для выполнения необходимой операции CRUD
на модели.
Хотя это вполне допустимый рабочий процесс для любого веб-фреймворка, вы можете улучшить этот процесс перемещение данных в базу данных и из нее путем связывания моделей Django с более естественный механизм ввода/вывода: формы.
После того, как вы программно создадите
достаточное количество записей модели Django в реальных проектах, вы увидите
появление шаблона: логика, лежащая в основе большинства операций модели Django,
продиктовано взаимодействием с пользователем. Либо конечный пользователь создает Запись модели Order
, конечный пользователь читает Сохранить запись модели
, администратор обновляет Меню
запись модели или администратор удаляет Пункт
запись модели. И что делают эти конечные пользователи и
администраторы используют для связи эти модели операций ? В яблочко,
формы в пользовательском интерфейсе (UI).
Теперь давайте посмотрим на флип стороны связи форм с моделями. В главе 6 вы узнали о Джанго формы, но знаете ли вы, какая операция наиболее вероятна? вы собираетесь делать с данными формы после ее обработки? Вы скорее всего, сохранит его в базу данных, в которой участвует Django модели.
Так что в духе Django's DRY В принципе, модельные формы предлагают способ использования модели Django в качестве основа для создания формы Django для выполнения операций CRUD на Модель Джанго. Другими словами, вместо создания отдельного Форма Django, а затем создание необходимого «связующего» кода для создания Экземпляр модели Django или наоборот, создание автономного Django модель, а затем создать необходимую форму для выполнения операций CRUD на запись модели, формы моделей Django позволяют не повторять самим собой.
Создание форм модели Django
Еще в Главе 6 вы создали Форма Django для записи имени, электронной почты и комментариев. Далее мы перепроектировать эту форму как форму модели, чтобы иметь возможность быстро сохранить данные в базу данных.
Первый шаг для создания модели Форма заключается в создании модели в качестве основы для данных. Листинг 9-1 иллюстрирует класс модели Django и сразу после Django модельная форма, созданная из модели.
Совет Обратитесь к прилагаемому к книге исходному коду, чтобы запускать упражнения, чтобы уменьшить набор текста и автоматически получить доступ к тестовым данным.
Листинг 9-1. Класс модели Django и форма модели
из форм импорта django класс Контакт(модели.Модель): имя = модели.CharField(max_length=50,blank=True) электронная почта = модели.EmailField() комментарий = модели.CharField(max_length=1000) класс ContactForm (forms.ModelForm): Мета класса: модель = контакт поля = '__all__'
Первый важный аспект в листинге 9-1 модель Django следует стандартному синтаксису модели, с тремя полями, которые используют поля модели для ограничения типа данные, хранящиеся в модели. Модель в листинге 9-1 остается простым чтобы лучше проиллюстрировать модельные формы, но можно добавить любые другие функции модели, о которых вы узнали в предыдущих двух главах. (например, валидаторы, чистые методы, мета-опции).
Следующим в листинге 9-1 является ContactForm
класс, который представляет форму и который
наследует свое поведение от django.forms.ModelForm
класс, последний из которых делает его модельной формой. Обратите внимание на В классе ContactForm
отсутствуют поля формы, подобные тем, которые вы
изученный в главе 6 в таблице 6-2, вместо этого он объявляет Мета
класс
раздел, подобный тому, который используется в моделях.
Класс Мета
раздел для ContactForm
определяет два параметра: модель
и поля
. Модель
опция указывает, какую модель использовать для создания формы, в этом
случае модель Contact
также указана в листинге 9-1. fields Параметр
указывает, какие поля модели использовать для
сгенерировать форму, в случае '__all__'
сообщает Django
использовать все модели поля
в модели.
Мощный аспект ContactForm
в листинге 9-1 использует два оператора
создать форму, отражающую те же типы полей, что и Свяжитесь с моделью
. Это не только позволяет избежать повторения
самостоятельно (например, вводя явные поля формы), поля формы
также наследует поведение проверки модели (например, models. EmailField()
переводятся в формы. EmailField
). Но я опишу более подробно и
варианты поведения наследования от модели к форме вскоре, как только
Я заканчиваю описание основ модельных форм.
Если у вас есть класс формы модели, вам может быть интересно, чем его обработка отличается от стандартной Форма Джанго? На самом деле очень мало, те же понятия, которые вы узнали в глава 6 для обработки, проверки и компоновки форм так же действительна для типовых форм, как показано в листинге 9-2.
Листинг 9-2 Обработка формы модели Django
# метод views.py для обработки формы модели Защитный контакт (запрос): если request.method == 'POST': # POST, сгенерировать связанную форму с данными из запроса форма = Контактная форма (запрос.POST) # проверяем правильность: если form.is_valid(): # Вставить в БД форма.сохранить() # перенаправление на новый URL: вернуть HttpResponseRedirect('/о/контакт/спасибо') еще: # ПОЛУЧИТЬ, сгенерировать несвязанную (пустую) форму форма = контактная форма () вернуть рендеринг (запрос, 'about/contact. html', {'форма': форма}) # См. главу 6 о синтаксисе шаблона макета формы в about/contact.html
В листинге 9-2 вы можете увидеть
последовательность методов просмотра следует тому же шаблону, что и стандартный Django.
форма. Когда пользователь делает запрос GET к методу представления, несвязанный экземпляр формы создается, который отправляется пользователю
и отображается с помощью шаблона about/contact.html
.
Затем, когда пользователь отправляет форму через POST-запрос, связанная форма создается с использованием запроса .POST
аргумент, который затем проверяется с помощью is_valid()
метод. Если значения формы недействительны, форма привязана к .
с ошибками возвращается пользователю, чтобы он мог исправить ошибки,
если значения формы допустимы, в конкретном случае листинга 9-2,
пользователь перенаправляется на /about/contact/thankyou
страница.
Однако есть одно важное
обработка различий в формах моделей, выделенных жирным шрифтом в списке
9-2. После того, как значения формы определены как допустимые, выполняется вызов
сделано для save()
в экземпляре формы модели. Этот метод save()
привязан к модели поддержки формы метод save()
, который означает, что данные формы структурированы
как запись модели и сохраняется в базе данных.
Как вы понимаете, этот процесс для создания и обработки формы модели реально экономит время по сравнению с создавать и обрабатывать автономную форму и автономную модель.
Параметры формы модели Django и сопоставление полей
Теперь, когда вы понимаете основы работы модельных форм, давайте рассмотрим ее различные варианты. Большинство параметров формы модели объявляются в операторе класса Meta, как вы видели в листинге 9-1. Однако также можно объявить обычные поля формы, чтобы переопределить поле модели по умолчанию поведения или вообще включить новые поля формы.
Обязательные параметры формы модели: модель и поля или исключить
Образцовые формы наследуют свои
поведение из класса forms. ModelForm
-- вместо
стандартные формы . Класс формы
- поэтому Django
всегда ожидает модели, на которой будет основываться форма, которая является
цель мета вариант модели
. Поэтому модель
Значение параметра всегда является требованием модели
формы.
Джанго не ожидает
структура модели, чтобы идеально соответствовать форме, в точку
Django также ожидает, что вы явно укажете, какие поля
модель поддержки должна или не должна стать частью формы модели.
Это достигается либо с помощью поля
опция -- в
указать, какие поля модели становятся частью формы модели -- исключить опцию
-- чтобы указать, какие поля модели
не должны становиться частью формы модели. Поля
или исключить параметр
требуется всегда, даже если модель
форма будет содержать все поля базовой модели. Обратите внимание, как
Пример формы модели в листинге 9-1 объявляет опцию fields='__all__'
для создания формы модели, которая фиксирует
тот же набор полей, что и его модель поддержки.
Когда вы объявляете форму модели
с чем-то отличным от fields='__all__'
(например, a
сокращенный список полей модели) или параметр исключить
(например, список полей модели, которые следует опустить в форме), имейте в виду, что
вы умышленно и потенциально нарушаете правила модели. За
например, по умолчанию все поля модели являются обязательными, поэтому, если вы создадите
модельная форма, которая пропускает определенные поля - либо с поля
или исключают
-- сама форма может
выглядят нормально, но форма модели никогда не будет успешно завершена
его стандартный рабочий процесс, если вы вручную не добавите пропущенные поля.
При таких обстоятельствах конечные пользователи увидят «недопустимую форму».
ошибка», потому что модельная часть формы повреждена из-за
требуемое значение поля модели. Предстоящий раздел о форме модели
проверка и инициализация описывает, как вручную добавить пропущенные
значения полей в модели форм.
Как видите, вы можете создать форма модели с большим или меньшим количеством полей, чем ее модель поддержки. В Кроме того, в форму модели также можно добавить новые поля -- которые не являются частью модели поддержки, а также настроить поле формы по умолчанию, созданное полем модели.
Для описания решения к этим последним двум сценариям в следующем разделе описывается различные поля формы, созданные каждым полем модели, так что вы можете определить, нужно ли вам настроить поведение по умолчанию, и В следующем разделе описывается, как настроить и добавить новые поля в модельная форма.
Сопоставление полей формы модели по умолчанию
Формы моделей следуют определенным правилам
для преобразования типов данных поля модели -- описано в таблице 7-1 --
в типы данных поля формы -- описано в таблице 6-2. В большинстве
случаях типы данных поля модели преобразуются в зеркально
эквивалентные типы данных поля формы. Например, если поле модели
использует модели . Тип данных CharField
, форма модели
преобразует это поле в данные формы . CharField
тип.
Таблица 9-1 иллюстрирует модель сопоставление формы, используемое между типами данных модели и типами данных формы. Обратите внимание, что типы данных с зеркальными отображениями типов данных между модели и формы заключены в первой строке таблицы 9-1.
Таблица 9-1 Сопоставление типов данных формы модели между моделями и формы
Поле модели | Поле формы |
---|---|
Models.booleanfield Models.Datefield Models.DateTimefield Models.Decimalfield Модели. Emailfield Models.filefield Models.filePathfield модели.0382 модели.NullBooleanField модели.SlugField модели.TimeField модели.URLField | Forms.booleanfield Forms.datefield Формы. NullBooleanField формы.SlugField формы.TimeField формы.URLField |
модели.AutoField модели.BigAutoField | Не представлен в форме, т.к. поля Auto модели генерируются базой данных |
моделей. BigIntegerField | форм.IntegerField, с min_value установленным на -9223372036854775808 и max_value установлено значение 9223372036854775807) |
модели. CharField | forms.CharField, с max_length, установленным в поле модели max_length и empty_value равны None, если null=True |
моделей.CommaSeparatedIntegerField | форм.CharField |
моделей.ForeignKey | форм.ModelChoiceField |
моделей.ManyToManyField | форм.ModelMultipleChoiceField |
моделей.PositiveIntegerField | формы.IntegerField, с min_value установленным на 0 |
моделей.PositiveSmallIntegerField | форм.IntegerField, с min_value, установленным на 0 |
моделей.SmallIntegerField | форм.IntegerField |
моделей.TextField | формы.CharField, с виджетом=forms.Textarea |
Как видно из таблицы 9-1, более
50% типов данных модели Django напрямую сопоставляются с эквивалентными данными формы.
типы. Большинство оставшихся типов данных модели слегка
скорректированные типы данных формы, чтобы лучше соответствовать типу базовой модели (например, моделей. PositiveIntegerField
сопоставляется с form.IntegerField
но с формой min_value
значение 0).
Всего четыре типа данных модели
в таблице 9-1, которые не сопоставляются непосредственно с описанными типами данных формы
в главе 6 в таблице 6-2. Модели . AutoField
и
Модели . Типы данных моделей BigAutoField
никогда не
представлены в модельных формах по той простой причине, что их значения
автоматически назначаются базой данных, поэтому их некуда вводить
формы. Модели .ForeignKey
и models.ManyToManyField
Типы данных модели представляют
отношения модели, что означает, что их данные поступают из отдельных
модели. В свою очередь модели .ForeignKey
и models.ManyToManyField Типы данных модели
не сопоставляются с
обычное поле формы для строк или чисел, а скорее поля формы
которые представляют другие данные модели, что является целью
специальные типы данных формы: forms. ModelChoiceField
и формы.ModelMultipleChoiceField
. Эти две последние формы
поля описаны в следующем подразделе о формах моделей с
отношения.
Совет Для просмотра HTML-кода, созданного полем формы тип данных (например, см. таблицу 6-2, которая содержит сопоставление между полями формы и виджетами формы, последний из которых создает фактическую форму HTML наценка.
Модель формирует новые и настраиваемые поля: виджеты, метки, help_texts, error_messages, field_classes и localize_fields
Теперь, когда вы знаете, как работают все модели поля преобразуются в поля формы в типовой форме, давайте адрес, как добавить и настроить поля формы в форме модели.
Добавление нового поля формы в форма модели так же проста, как объявление поля формы, как если бы это было регулярная форма. Также можно настроить форму по умолчанию тип данных поля, используемый типом данных поля модели (т. е. сопоставления в таблице 9-1), объявив новое поле формы с тем же именем, что и поле модели, чтобы иметь приоритет над полем формы модели по умолчанию отображение.
Листинг 9-3 иллюстрирует Класс модели Django и форма модели из листинга 9-1, обновленные до включить новое поле формы и поле формы, которое переопределяет поле по умолчанию отображение поля формы модели.
Листинг 9-3 Форма модели Django с новым и настраиваемым полем
из форм импорта django def faq_suggestions (значение): # Подтвердить значение и поднять form.ValidationError для недопустимых значений проходить класс Контакт(модели.Модель): имя = модели.CharField(max_length=50,blank=True) электронная почта = модели.EmailField() комментарий = модели.CharField() класс ContactForm (forms.ModelForm): возраст = формы.IntegerField() комментарий = forms.CharField(widget=forms.Textarea,validators=[faq_suggestions]) Мета класса: модель = контакт поля = '__all__'
В листинге 9-3 сначала добавляется новый age
поле формы для ввода целочисленного значения в
форма. Хотя базовая модель Contact
никогда не
зная о поле или значении age
, с этим
изменение формы модели потребует, чтобы это поле было предоставлено
как часть рабочего процесса формы.
Следующим в листинге 9-3 является комментарий
поле формы, которое переопределяет лежащий в его основе
поле модели с тем же именем. В этом случае переопределение комментарий
поле формы предназначено для добавления пользовательского виджет
, а также добавление пользовательского валидаторы
способ проверки комментария
значение до того, как форма будет считаться действительной -- обратите внимание, что оба виджет
вариант и валидаторы
вариант
стандартные параметры формы, описанные в главе 6.
Переопределение поля формы
механизм в листинге 9-3 имеет как преимущество, так и недостаток.
Преимущество в том, что вы получаете полный контроль над полем формы для определения
любые варианты. Недостатком является опция поля модели (например, max_length
) -- это будет передано в поле формы
-- потеряны и должны быть повторно объявлены как часть новой формы
заявление поля.
Чтобы сохранить поле модели
базовое поведение и по-прежнему иметь возможность настраивать определенную форму
параметры поля, формы модели поддерживают дополнительные параметры метакласса
кроме модель
, поля
и исключить опции
. В листинге 9-4 показана модель
дополнительные мета-параметры формы для переопределения модели-формы по умолчанию
сопоставление полей, сохраняя поле базовой модели
поведение.
Листинг 9-4 Форма модели Django с мета-параметрами для переопределения поведение поля формы по умолчанию
из форм импорта django класс Контакт(модели.Модель): имя = модели.CharField(max_length=50,blank=True) электронная почта = модели.EmailField() комментарий = модели.CharField() класс ContactForm (forms. ModelForm): Мета класса: модель = контакт поля = '__all__' виджета = { 'имя': models.CharField(max_length=25), 'комментарий': form.Textarea(attrs={'cols': 100, 'rows': 40}) } ярлыка = { 'имя': 'Полное имя', 'комментарий': 'Проблема' } help_texts = { «комментарий»: «Предоставьте подробный отчет о проблеме, чтобы получить быстрый ответ» } error_messages = { 'имя': { 'max_length': "Имя может содержать не более 25 символов" } } поля_классы = { 'электронная почта': EmailCoffeehouseFormField }, localized_fields = '__all__'
Самый важный аспект Параметры формы метамодели в листинге 9-4 — это имена во множественном числе. опций поля формы, описанных в главе 6. Выделенный мета-параметры формы модели в листинге 9-4 во множественном числе, потому что они может объявлять параметры для нескольких полей формы как словарь, где каждая клавиша представляет имя поля формы, а его значение — параметр ценность.
Например, виджеты
и ярлыки
мета-параметры в
В листинге 9-4 определяются пользовательские виджеты и метки как для имя
и комментарий
поля формы модели. help_texts
метапараметр определяет help_text
опция для модели комментарий
поле формы, а error_messages
мета-опция
объявляет пользовательское сообщение об ошибке формы для max_length
ошибка ключа на модели имя
поле формы.
Далее, field_classes
метапараметр в листинге 9-4 используется для
объявить пользовательское поле формы для формы модели электронной почты
поле.