2011-10-11 12 views
9

मैं Django में एक एप्लिकेशन लिख रहा हूं और मॉडल में कई TimeFields का उपयोग कर रहा हूं। मैं केवल समय प्रारूप के साथ काम करना चाहता हूं: मिमी (एचएच: मिमी: एसएस या एचएच पीएम/ए.एम. या अन्य चीजें नहीं)। मैंDjango टेम्पलेट में टाइमफ़ील्ड प्रारूप

USE_L10N ओवरराइड TIME_FORMAT प्रलेखन के अनुसार Django TIME_FORMAT = 'H:i' और USE_L10N = False की स्थापना की स्थापना की है, अगर True

करने के लिए सेट मेरे टेम्पलेट में मैं अपने आप की तरह Django द्वारा बनाई इनपुट बॉक्स का उपयोग कर रहा:

{{formName.timeField}} 

समस्या यह है कि जब तक मैं "10:00" जैसा कुछ पेश करता हूं औरकरता हूं, जब POST किया जाता है तो Django (या जो भी) इसे "10:00:00" में बदल देता है (इसलिए यह सेकंड जोड़ता है)।

  • क्या प्रारूप प्रारूप निर्दिष्ट करने का कोई तरीका है जिसमें डेटाटाइम फ़ील्ड सहेजी गई तिथियां प्रदर्शित करते हैं? अगर मैं इनपुट बॉक्स के मूल्य में |date:"H:i" जैसे कुछ का उपयोग कर सकता हूं जो चाल करेगा।

दूसरी तरफ मैं जानता हूँ कि मैं मैन्युअल रूप से इनपुट बॉक्स कर सकता है (नहीं सीधे {{formName.timeField}} का उपयोग) पर है, लेकिन मैं तो मैं उस से बचने के लिए (कम से कम के लिए चाहते हैं कि के साथ अतीत में कुछ समस्या थी गया है पल)।

वहाँ भी Django TimeField Model without seconds में यह समान प्रश्न है, लेकिन समाधान काम नहीं करता है (यह देता है मुझे 'NoneType' ऑब्जेक्ट कोई विशेषता 'strptime' है)

उत्तर

17

मैं अपने अनुप्रयोग में बिल्कुल इस समस्या थी, और इसे हल Django के TimeInput विजेट के लिए एक format पैरामीटर पारित करके:

from django import forms 

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

बहुत बहुत धन्यवाद! यह ठीक काम करता है !!! – user989863

+5

भविष्य के पाठकों के लिए बस एक नोट कि 'टाइमइनपूट' विजेट का 'प्रारूप' पैरामीटर केवल फ़ील्ड के इनपुट सत्यापन को फ़ील्ड के प्रारंभिक मान आउटपुट प्रारूप को नियंत्रित नहीं करता है। इनपुट सत्यापन प्रारूप के लिए, 'टाइमफ़िल्ल्ड' के 'input_formats' पैरामीटर का उपयोग करें। – Ghopper21

8

मान लें कि आप एक प्रारूप है कि आप, सभी TimeFields उपयोग करना चाहते हैं तो आप अपनी सेटिंग फाइल करने के लिए TIME_INPUT_FORMATS जोड़ सकते हैं। उदाहरण के लिए, TIME_INPUT_FORMATS = ('%I:%M %p',) आपके समय को "5:30 अपराह्न" के रूप में प्रारूपित करेगा।

दस्तावेज़: https://docs.djangoproject.com/en/dev/ref/settings/#std:setting-TIME_INPUT_FORMATS

+0

अच्छी विधि! वैश्विक स्तर पर समस्या हल करता है। – maciek

संबंधित मुद्दे