Per qualche motivo, utilizzo un codice HTML personalizzato per la visualizzazione del modulo. L'input del mio modulo ottiene il valore iniziale (data) e mostra lo stesso modulo dopo l'invio.Valori datetime nei moduli Django (iniziale e inviato ha un formato diverso pensato)
Ma dopo l'invio, l'immissione non ha alcun valore precedentemente selezionato (solo vuoto).
Io uso {{ Form.Fileld.value|date:"Y-m-d" }}
nel temlate per ottenere i valori iniziali e inviati.
Sembra che i valori iniziali e inviati siano in diversi formati: "datetime" per i valori iniziali e "string" dopo l'invio.
Qui è la mia semplice test:
Modulo
class ShowStartEndDateForm(forms.Form):
start_date = forms.DateField(initial=date.today().replace(day=1),
label="Start",
widget=forms.DateInput(format='%Y-%m-%d'),
input_formats=['%Y-%m-%d'])
...
View
if request.method == 'POST':
form_date = ShowStartEndDateForm(request.POST)
if form_date.is_valid():
form_was_submitted = True
cd = form_date.cleaned_data
operator = cd['operators']
days=[]
for day in range(0,(cd['end_date']-cd['start_date']).days+1):
days.append(cd['start_date']+relativedelta(days=+day))
else:
form_date = ShowStartEndDateForm()
return render_to_response('epay.html', locals(),
context_instance=RequestContext(request))
Template
<!- HTML FORM here
|classname is my custom template filter.
-->
Date1: {{ form_date.start_date.value|date:"Y-m-d" }} \
({{ form_date.start_date.value|classname }})
Date2: {{ form_date.start_date.value }}
Prima convocazione in del browser:
Date1: 2013-10-01 (date)
Date2: 1 October 2013
Dopo modulo di conferma:
Date1: (unicode)
Date2: 2013-10-01
Che cosa sto facendo di sbagliato? Qual è il modo corretto per accedere ai valori iniziali e inviati del modulo?
Thnak you.
è possibile mostrare la vista ? –
Visualizza aggiornato. Tnx! – Lufa