django newforms: field.help_text manipulieren...

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ich möchte gern den newforms field help_text im nachhinein ändern. Es soll angefügt werden, welcher initial Wert gesetzt ist.

So klappt es nicht:

Code: Alles auswählen

from django import newforms as forms

class SearchPreferences(forms.Form):
    min_term_len = forms.IntegerField(
        help_text="Min length of a search term",
        initial=3, min_value=1
    )
    max_term_len = forms.IntegerField(
        help_text="Max length of a search term",
        initial=50, min_value=1, max_value=200
    )

def setup_help_text(form):
    for field_name, field in form.base_fields.iteritems():
        field.help_text = "%s (default: '%s')" % (
            field.help_text, field.initial
        )

p = SearchPreferences()
setup_help_text(p)
print p.as_p().replace(">", ">\n")
raus kommt die nicht manipulierte Variante:

Code: Alles auswählen

<p>
<label for="id_min_term_len">
Min term len:</label>
 <input type="text" name="min_term_len" value="3" id="id_min_term_len" />
 Min length of a search term</p>

<p>
<label for="id_max_term_len">
Max term len:</label>
 <input type="text" name="max_term_len" value="50" id="id_max_term_len" />
 Max length of a search term</p>
EDIT: OK, hab gerade eine Lösung gefunden: Die newforms Klasse darf noch nicht instanziert sein, dann klappt es... Ob es aber auch mit initialisierten Klassen noch geht???

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

Würde sowas nicht gar ins template passen?

Code: Alles auswählen

class SearchPreferences(forms.Form):
    min_term_len = forms.IntegerField(
        help_text="Min length of a search term (default: '%s')",
        initial=3, min_value=1
    )
    max_term_len = forms.IntegerField(
        help_text="Max length of a search term (default: '%s')",
        initial=50, min_value=1, max_value=200
    )
(jinja)

Code: Alles auswählen

<dd>{{ form.min_term_len.help_text|format(form.min_term_len.initial) }}</dd>
Oder irgentwie so halt :D
Antworten