Пара советов: save() можно возвращать объект, который сохраняется/создается, иногда это удобно. Для форм User и UserProfile посмотрите как работает инлайн. Для нескольких форм одного типа есть замечательная штука Formset.
Вообще писателям форм настоятельно рекомендую читать прямо исходник django.forms чтобы знать чего ждать, особенно в части рендринга, и как строить workaround-ы.
Наш человек учится на ошибках… Американец же на компьютерах…
Из моего опыта я сделал вывод, что книга для чайников способна дать образование чайника. Нужно заведомо учить правильному мышлению, методике поиска и выбора правильного средства решения задачи, правильной структуры данных. Иначе пхпизм не изыдет и все будет делаться в циклах в ручном режиме, а логику сваливать в шаблоны.
Учитесь сразу высшему пилотажу, я верю в человечество.
Знаете, что вас хотел бы попросить…
Вот глядя в код человек далекий от технологии, которая фактически построена на магии, ничего не поймет. Для него этот декларативный вид формы ничего не скажет.
Написали бы вы как оно работает все. Логику построения вью. Секция пост или гет, случай is_ajax(). Почему действие направленное на коммит идет постом и зачем нужен редирект. Затем физику процесса как данные пост парсятся QueryDict (его плюсы… как работает getlist)… Потом механизмы валидации… Магический метод clean_. Как работают префиксы. Как прохакать в ините сделать обязательными некоторую группу полей выборочно в зависимости от выбранной радиокнопки, а может и добавлять поля динамически.
На мое удивление, люди приходящие с пхп или дотнета либо долго отказываются понимать как оно все элегантно работает, либо их охватывает нескрываемое благоговение.
Раскройте физику процесса — с удовольствием почитаю и покоментирую.
Боюсь, что вы сильно переоцениваете мои способности на данный момент, но я постараюсь отыскать и описать что-нибудь более низкоуровневое.
Насчет благоговения — может так оно и надо? На то они и языки с высоким уровнем абстракции, что иногда и без понимания физики можно добиться успеха в своём деле. А потом уже начинаешь интересоваться «а как это оно там»
Упоминание пхп в топике про питон чревато появлением нервного тика :)
Это всё можно найти в документации. А вот реально часто встречающаяся задача, для которой в Django, кажется, нет решения: форма загрузки файлов наподобие веб-интерфейса любого почтовика, то есть с динамическими полями, создаваемыми скриптом.
formset'ы поддерживают только повторение формы целиком (http://docs.djangoproject.com/en/dev/topics/forms/formsets/), если я не ошибаюсь. В случае необходимости создания формы для заполнения описания товара + списка магазинов, где он продается по разным ценам приходится использовать Javascript, но это ещё полбеды, отказаться от автоматической админки и на стороне сервера писать достаточно большую ручную валидацию для MyForm.__init__(*args, **kwargs).
Да, форма повторяется целиком. Другое дело, что никто не мешает форму в формсете указать свою, например, такую, которая содержит только нужные поля. Список магазинов с ценами (или чего там) — это таблица, в которой у элементов есть FK на товар, так? Т.е. можно определить свою форму для элементов этой таблицы и использовать формсет (который инлайн- и model-).
Я может как-то задачу не так понял, или не до конца?
Да, а для какого-нибудь добавления строк на клиенте в любом случае придется писать js.
php — это язык программирования, а не диагноз. да синтаксис у python значительно лучше, но это не значит, что нельзя архитектурные подходы подсматривать, тем более у нас открытых аналогов django даже рядом нет. воспетый выше yii — это _первый_ фреймворк на котором можно писать.
Работа с формами в Django