È inoltre possibile utilizzare un nuovo widget: ho fatto questo in modo che io possa avere un widget che ha creato una visualizzazione del testo di una data, e un modulo nascosto con la stessa data in esso, quindi potrebbe essere visibile all'utente, ma non può cambiarlo.
Ecco un iniziale (ancora testando/di essere ripulito) Versione:
class DayLabelWidget(forms.Widget):
def render(self, name, value, attrs):
final_attrs = self.build_attrs(attrs, name=name)
if hasattr(self, 'initial'):
value = self.initial
if type(value) == type(u''):
value = datetime.date(*map(int, value.split('-')))
return mark_safe(
"%s" % value.strftime("%A (%d %b %Y)")
) + mark_safe(
"<input type='hidden' name='%s' value='%s' />" % (
name, value
)
)
def _has_changed(self, initial, data):
return False
È quindi possibile utilizzare questo campo come (widget=DayLabelWidget,)
.
fonte
2009-07-20 07:08:01
Grazie - avevo visto .label ma non .initial. Curiosamente, l'iniziale non è nemmeno menzionata nel documento "Working with forms". – ine
. Initial funziona solo la prima volta che viene presentato il modulo, giusto? Ad esempio, se ci sono errori e si ripresenta il modulo, non ci saranno iniziali nella mia esperienza. – dfrankow
Nella terminologia di Django, questo funziona solo con moduli non associati. Cosa succede se si desidera che funzioni con entrambi i moduli non vincolati e rilegati? – dfrankow