2013-11-16 4 views
3

Просто любопытно. Какова наилучшая практика, когда следует использовать валидацию формы и модели? Из того, что я в настоящее время понимают, форма проверки должны быть использованы для:Когда использовать форму против проверки модели?

  • AJAX/HTTP запросов Params
  • Формы, которые не коррелируют с моделью?

Другой вопрос: у меня есть HTML-форма, которая грубо коррелирует с экземпляром модели, я использую ModelForm для этого?

ответ

1

Определенно используйте ModelForm, если ваша форма напоминает объект модели даже в крошечном бите.

Если есть некоторые незначительные отличия (например, вы не используете некоторые поля или хотите использовать разные сообщения об ошибках и т. Д.), То намного проще настроить ModelForm, а затем использовать Form и реализовать всю эту функциональность с нуля.

Для получения дополнительной информации относительно ModelForm, пожалуйста, проверьте PyDanny's Core Concepts of Django ModelForms.

0

Я также пытаюсь понять, в чем разница/соотношение между формой и валидацией модели, и я хотел бы поделиться своими заметками, которые формируются после прочтения нескольких документов.

В настоящее время я заинтересован в Creating Forms from Models

@mariodev общего документа Core Concepts of Django ModelForms и это обеспечило хороший старт.

ModelForms выбери валидатор Основы определений модели полевого

Основную история за кулисами, кажется, DRY главным. This article очень хорошо объясняет, что именно имеет место здесь.

Хорошо, все это справедливо. Вопрос: «Где в документации по Django это объясняется»?

я наткнулся на очень brilliant article, где он утверждает, что:

form.full_clean() метод вызывается Джанго в начале процесса проверки (по form.is_valid(), как правило, непосредственно после просмотра получает опубликованные данные).

Исправьте меня, если я ошибаюсь, но эта строка гласит, что каждый раз, когда я вводим данные и нажимаю «вводить», процесс проверки начинается!

ОК, это просто сейчас:

  • validation on a ModelForm начинается тогда, когда мы попали 'войти'.

  • Джанго первого validates the form пути проверки один за другим каждый применит метод проверки на Fields, Field Subclasses (Это документация для полевого подкласса модели, а не для поля формы подкласса), Form Subclasses и ModelForm (так как это ModelForm) ,

  • И, наконец, оно проверяет Model Instance.

Вот как все это работает теоретически. Остается только реализовать его.

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