Hello, I'm not sure if I should post this message in django-developers or here, but before I bother django developers, I wanted to discuss this issue with django users. I stumbled across this one when I was creating a custom User class, by inheriting from django's built in User class. I extended User, extended User admin, and even created a custom add form, but I just couldn't get my form fields displayed. Having fair experience with django forms, I thought, that these fields should automatically be rendered in form. When I took a look at the form's code, I immediately understood what's wrong with my approach- form fields were hardcoded in django\contrib\admin\templates\admin\auth\user\add_form.html Looking at the code, I see there is some duplication in contrib.auth.forms file- help text and field names are both specified in forms and in template- see yourself:
forms.py class UserCreationForm(forms.ModelForm): """ A form that creates a user, with no privileges, from the given username and password. """ username = forms.RegexField(label=_("Username"), max_length=30, regex=r'^\w+$', help_text = _("Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)."), error_message = _("This value must contain only letters, numbers and underscores.")) password1 = forms.CharField(label=_("Password"), widget=forms.PasswordInput) password2 = forms.CharField(label=_("Password confirmation"), widget=forms.PasswordInput) add_form.html <p>{% trans "First, enter a username and password. Then, you'll be able to edit more user options." %}</p> <fieldset class="module aligned"> <div class="form-row"> {{ form.username.errors }} {# TODO: get required class on label_tag #} <label for="id_username" class="required">{% trans 'Username' %}:</ label> {{ form.username }} <p class="help">{{ form.username.help_text }}</p> </div> <div class="form-row"> {{ form.password1.errors }} {# TODO: get required class on label_tag #} <label for="id_password1" class="required">{% trans 'Password' %}:</ label> {{ form.password1 }} </div> <div class="form-row"> {{ form.password2.errors }} {# TODO: get required class on label_tag #} <label for="id_password2" class="required">{% trans 'Password (again)' %}:</label> {{ form.password2 }} <p class="help">{% trans 'Enter the same password as above, for verification.' %}</p> </div> </fieldset> (I left out irrelevant parts of code) Shouldn't the add_form.html be converted to something like: {% for field in form %} <div class="form-row"> {{ field.errors }} {% trans field.label_tag %}:{{ field }} <p class="help">{{ field.help_text }}</p> </div> {% endfor %} In my opinion this approach is more flexible and avoids unneccesary duplication, while maintaining the same functionality and appearance. And my point is- should I post this message to django-developers (I know, some of the developers should read this list too) or keep my thoughts to myselft? :> Reinis --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~----------~----~----~----~------~----~------~--~---