2011-10-11 25 views
9

Bir uygulamada Django ve çeşitli TimeFields kullanarak yazıyorum. Sadece saat biçimi ss ile çalışmak istiyorum: mm (ss: dd: ss veya hh p.m./a.m. Veya başka şeyler). Ben otomatik gibi Django tarafından oluşturulan giriş kutularını kullanıyorum benim şablonunda TrueDjango şablonunda TimeField biçimi

ayarlı ise Ben, belgelere göre

USE_L10N geçersiz kılmaları TIME_FORMATTIME_FORMAT = 'H:i' ve USE_L10N = False ayar Django belirledik:

{{formName.timeField}} 

Sorun şu ki, "10:00" gibi bir şey eklediğim veyaptıkları sürece, POST yapıldığı zaman, Django (ya da her neyse) "10:00:00" a çevirir (böylece saniye ekler).

  • Tarih saatleri alanlarının kaydedilmiş tarihleri ​​gösterme biçimini belirtmenin bir yolu var mı? |date:"H:i" gibi bir şey kullanabiliyor olsaydım, hile yapacak giriş kutusunun değeri.
Ben (doğrudan {{formName.timeField}} kullanarak değil) elle giriş kutusuna yapabileceğini biliyorum Öte yandan

ama böylece en azından için (yani önlemek istiyorum geçmişte bazı sorunlar yaşadım an).

Orada Django TimeField Model without seconds bu benzer soru da, ancak çözüm benim app tam olarak bu sorunu vardı

cevap

17

(benim 'NoneType' nesne hiçbir özelliği 'ni strptime' vardır verir) çalışmak ve bunu çözmüş değil Django'nın TimeInput widget'a bir format parametresini ileterek:

from django import forms 

class SettingsForm(forms.Form): 
    delivery_time = forms.TimeField(widget=forms.TimeInput(format='%H:%M')) 
+1

Çok teşekkür ederim! Bu sadece iyi çalışıyor! – user989863

+5

Gelecek okuyucular için 'TimeInput' widget'inin 'format' parametresinin, alanın giriş doğrulamasını değil, sadece alanın başlangıç ​​değer formatını kontrol ettiğini not edin. Giriş doğrulama formatı için 'TimeField'' input_formats' parametresini kullanın. – Ghopper21

İlgili konular