Форум сайта python.su
Hi.
Хотел бы убедиться в правильности (или наоборот) следующего:
Для вывода формы и контроля вывода последовательности ее полей
1) для “неконтролируемого” порядка (то есть он контролируется на уровне forms.py) и уменьшения количества кода в темплейте применяем
{{ form.as_p }} имеем компактный код темплейта , но монолит
2) При микшировании форм мы теряем контроль над выводом порядка полей. в случаии использования {{ form.as_p }} То есть например : при использовании ModelForm и дополнительных полей как в сл. коде:
class AddForm(forms.ModelForm):
class Meta:
model = MyModel
password1 = forms.CharField()
password2 = forms.CharField()
Отредактировано (Дек. 6, 2008 23:58:44)
Офлайн
romankrvпорядок контролируем - он соотвествует порядку декларации полей
1) для “неконтролируемого” порядка
romankrvнет. всегда можно поменять
2) При микшировании форм мы теряем контроль над выводом порядка полей. в случаии использования {{ form.as_p }}
romankrvкаких случаях? какая “сигнальная система”?
3) Возможно ли как то применять сигнальную систему джанги в подобных случаях или оптимальнее п.2
Офлайн
DaevaornХорошо. Это можно поменять в случаи что все мои модели - мои, а если я наследуюся от встроенных моделей например django.contrib.auth.models.User
нет. всегда можно поменять
class UserProfile(User):
middle_name = models.CharField(max_length=100)
class UserAddForm(forms.ModelForm):
password1 = forms.CharField(widget=forms.PasswordInput(attrs=attrs_dict,), label=_(u'пароль'))
password2 = forms.CharField(widget=forms.PasswordInput(attrs=attrs_dict,), label=_(u'пароль (повтор)'))
class Meta:
model = UserProfile
exclude = ('last_login', 'user_permissions','date_joined', 'is_staff', 'is_active', 'is_superuser', 'groups', 'password', )
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="en">
<head>
</head>
<body>
{{ form.as_p }}
</body>
</html>
Офлайн
Ром, слишком много слов и мало толку. Ведь не мы у тебя что-то спрашиваешь, а ты. Так зачем вещи, которые и так все знают, перепечатывать?:-)
Ты хочешь порядок полей изменить у формы? Ну тогда поменяй его у UserAddForm.fields. В чем проблема то?
romankrvЧто значит теряешь? Если ты их не выводишь, это не значит что они теряются. Ты их так же можешь все выводить. И лейбл и хелп текст и всё прочее.
Но я также и теряю при таком перечислении все определения что были заданы в классе формы (например уже не выводится label поля итд )
romankrvМягко говоря, это не нужно.
И второе правильно ли изменять порядок расположения полей во встроенных классах Джанги таких как User?
Офлайн
Порядок расположения полей в классах менять нет необходимости.
Если нужно - меняйте порядок вывода в шаблонах.
Офлайн
DaevaornЯ имею ввиду что если в шаблоне писать {{ form.as_p }} то label help_text итп что указаны в классе формы - это выводится в клиента. Если же {{ form.имя_поля_класса_формы }} то это не выводится в клиента. Почему?
Ты их так же можешь все выводить. И лейбл и хелп текст и всё прочее.
Офлайн
Потому что надо попросить это вывести. У филда есть несколько полей, где это всё лежит.
Офлайн
В джанго тут две крайности - или обобщённый вывод, таблицей или списком или полность задаваемый вручную - через field.свойство.
Хотя вывод
class ContactForm(forms.Form):
subject = forms.CharField(max_length=100)
{{form.subject}}
<label for="id_subject">Subject:</label>
<input id="id_subject" type="text" name="subject" maxlength="100" />
Офлайн
FerromanВот собственно и почему я затеял этот топик что если я написал один раз в классе формы нужные мне фичи то зачем же снова повторятся при наборе темплейта.
Было бы весьма удобно иногда. Полная кастомизация не так часто нужна.
Отредактировано (Дек. 8, 2008 15:31:21)
Офлайн