Any advice is greatly appreciated!
Thanks,
Carlos :)
On Oct 7, 11:38 am, Oleg Korsak <kamikaze.is.waiting....@gmail.com>
wrote:
> Hello! Is there any built-in method to make my form show required field
> label with bold (or some king of mark like "*") and other fields as
> normal text
>
> signature.asc
> 1KDownload
Does this work?
Ken пишет:
> --~--~---------~--~----~------------~-------~--~----~
> You received this message because you are subscribed to the Google Groups "Django users" group.
> To post to this group, send email to django...@googlegroups.com
> To unsubscribe from this group, send email to django-users...@googlegroups.com
> For more options, visit this group at http://groups.google.com/group/django-users?hl=en
> -~----------~----~----~----~------~----~------~--~---
>
>
[Prompt:] [Textbox] [a red '*' initially or a error message after
validation] [help text if any]
So, in the template, I was hoping to be able do something like:
<b>{{field.label_tag}}:</b> {{field}}
{% if field.error%}
<font color="red"><b>{{ field.error }}</b></font>
{% else %}
{% if field.required %} <font color="red">*</font>{% endif %}
{% endif %}
{% if field.help_text %}} <font
color="silver">{{ field.help_text }}</font>{% endif %}
Not sure if I have all the code correct here but you get the idea...
Thanks to everyone in the Django community!
Carlos :)
The code:
class ExtForm(forms.BaseForm):
def _html_output(self, normal_row, error_row, row_ender,
help_text_html, errors_on_separate_row):
"Helper function for outputting HTML. Used by as_table(),
as_ul(), as_p()."
from django.newforms.forms import BoundField
from django.newforms.fields import Field
from django.newforms.util import flatatt, ErrorDict,
ErrorList, ValidationError
from django.utils.html import escape
from django.utils.encoding import StrAndUnicode,
smart_unicode, force_unicode
top_errors = self.non_field_errors() # Errors that should be
displayed above all fields.
output, hidden_fields = [], []
for name, field in self.fields.items():
bf = BoundField(self, field, name)
bf_errors = self.error_class([escape(error) for error in
bf.errors]) # Escape and cache in local variable.
if bf.is_hidden:
if bf_errors:
top_errors.extend(['(Hidden field %s) %s' % (name,
force_unicode(e)) for e in bf_errors])
hidden_fields.append(unicode(bf))
else:
if errors_on_separate_row and bf_errors:
output.append(error_row %
force_unicode(bf_errors))
if bf.label:
label = escape(force_unicode(bf.label))
# Only add the suffix if the label does not end in
punctuation.
if self.label_suffix:
if label[-1] not in ':?.!':
label += self.label_suffix
if field.required:
label = bf.label_tag(label, attrs={'class':
'required'}) or ''
else:
label = bf.label_tag(label, attrs={'class':
'optional'}) or ''
else:
label = ''
if field.help_text:
help_text = help_text_html %
force_unicode(field.help_text)
else:
help_text = u''
output.append(normal_row % {'errors':
force_unicode(bf_errors), 'label': force_unicode(label), 'field':
unicode(bf), 'help_text': help_text})
if top_errors:
output.insert(0, error_row % top_errors)
if hidden_fields: # Insert any hidden fields in the last row.
str_hidden = u''.join(hidden_fields)
if output:
last_row = output[-1]
# Chop off the trailing row_ender (e.g. '</td></tr>')
and insert the hidden fields.
output[-1] = last_row[:-len(row_ender)] + str_hidden +
row_ender
else: # If there aren't any rows in the output, just
append the hidden fields.
output.append(str_hidden)
return u'\n'.join(output)
Hope this helps.
Cheers,
Marco
On Oct 22, 8:33 pm, weissbl...@yahoo.com wrote:
> I see what you mean but I dont think it will work because I want the
> field elements to look sort of like:
>
> [Prompt:] [Textbox] [a red '*' initially or a error message after
> validation] [help text if any]
>
> So, in the template, I was hoping to be able do something like:
>
> <b>{{field.label_tag}}:</b> {{field}}
> {% if field.error%}
> <font color="red"><b>{{ field.error }}</b></font>
> {% else %}
> {% if field.required %} <font color="red">*</font>{% endif %}
> {% endif %}
> {% if field.help_text %}} <font
Almost like that, just subsitite field.required to
field.field.required. field is a BoundField, and field.field is the
Field (e.g. CharField, IntegerField) that is set in the Form.