2013-04-16 12 views
15

मेरे पास ऐसी घटनाओं का एक मॉडल है जो लगभग हमेशा 10:00 बजे शुरू होता है, लेकिन पहले/बाद में शुरू हो सकता है। व्यवस्थापक में चीजों को आसान बनाने के लिए, मैं समय 10 बजे तक डिफ़ॉल्ट करना चाहता हूं, लेकिन यदि आवश्यक हो तो परिवर्तनीय हो; तिथि को ध्यान में रखे जाने की आवश्यकता होगी, इसलिए इसे डिफ़ॉल्ट की आवश्यकता नहीं है, लेकिन आदर्श रूप से यह वर्तमान दिनांक के लिए डिफ़ॉल्ट होगा।क्या मैं Django डेटाटाइम फ़ील्ड के लिए एक विशिष्ट डिफ़ॉल्ट समय सेट कर सकता हूं?

मुझे एहसास है कि मैं बाद में पूरा करने के लिए डेटाटाइम का उपयोग कर सकता हूं, लेकिन क्या यह संभव है (और कैसे) मैं एक विशिष्ट डिफ़ॉल्ट मान को समय निर्धारित कर सकता हूं?

अद्यतन: मुझे यह पता लगाना चाहिए कि मैं कौन सा कर रहा हूं, जो मैं पूरा करने की कोशिश कर रहा हूं ... मैं शायद पूछने से पहले ऐप के साथ आगे बढ़ना चाहिए था। इस बीच मदद के लिए धन्यवाद!

+0

मैं हो रही है 'लेखन त्रुटि: __init __() एक अप्रत्याशित कीवर्ड तर्क मिल गया' डिफ़ॉल्ट ''। कोई विचार? एक फॉर्म का उपयोग करना। मॉडल फॉर्म के बजाय फॉर्म। फॉर्म। टाइमफिल्ड (डिफ़ॉल्ट = डीटी.टाइम (16, 0), विजेट = फॉर्म। टाइम इनपुट) –

उत्तर

-1

ऐसा कुछ?

import datetime 

dt = datetime.now() 
dt.hour = 22 
dt.minute = 0 
dt.second = 0 

हार्ड संदर्भ के बिना अधिक विशिष्ट।

+0

मुझे यकीन नहीं है कि मैं और अधिक संदर्भ दे सकता हूं; मैं बस उस व्यक्ति को डेट में प्रवेश करना चाहता हूं जिसमें इसे एक नया ईवेंट जोड़ने पर 10:00 तक नहीं बदला जाए (लेकिन अभी भी इसे बदलने का विकल्प है)। यदि कोई है तो समाधान स्वीकार्य रूप से सरल है; ऐसा लगता है कि यह काम कर सकता है। – lisaq

11

Django दस्तावेजों से::

यह भी यहाँ पर चर्चा की है मामले में

from datetime import datetime, timedelta 

def default_start_time(): 
    now = datetime.now() 
    start = now.replace(hour=22, minute=0, second=0, microsecond=0) 
    return start if start > now else start + timedelta(days=1) 

class Something(models.Model): 
    timestamp = models.DateTimeField(default=default_start_time) 
+1

मुझे यह पसंद है कि मॉडल उदाहरण उदाहरण 10 बजे के बाद बनाया गया है, तो यह उदाहरण "कल रात 10 बजे" का उपयोग कैसे करता है। – gldnspud

+0

जब आप 'datetime.now 'के बजाय' datetime.now() 'का उपयोग कर रहे हैं, तो' अब 'एक निश्चित तिथि होगी, जब इसका पहले मूल्यांकन किया जाएगा। इसका क्या मतलब है? जब आपका सर्वर कमजोर के लिए चलता है, तो 'datetime.now()' के साथ यह हमेशा दिनांक होगा जब सर्वर शुरू किया गया था। 'Datetime.now' का उपयोग करने के साथ इसे गतिशील रूप से मूल्यांकन किया जाएगा। – Asqiir

+0

क्या घंटों मिनट और मिलीसेकंड दिखाने के बजाए स्क्रीन पर प्रदर्शित होने पर केवल घंटे और मिनट दिखाना संभव है। और सैन्य समय का उपयोग करने के बजाय, am और pm का उपयोग करें ... क्योंकि आपके ऊपर जो कुछ है उसके साथ पूर्ण समय दिखाता है। –

6

आप के लिए डिफ़ॉल्ट सेटिंग मूल्य में रुचि रखते हैं:

The default value for the field. This can be a value or a callable object. If callable it will be called every time a new object is created.

तो ऐसा करने TimeField: https://code.djangoproject.com/ticket/6754

नहीं है:

start = models.TimeField(default='20:00') 

बजाय कार्य करें:

import datetime 
start = models.TimeField(default=datetime.time(16, 00)) 
+1

सुनिश्चित नहीं है कि आप 'टाइमफ़िल्ल्ड' में datetime.datetime क्यों शामिल करना चाहते हैं। 'प्रारंभ = मॉडल करने के लिए बेहतर। टाइमफिल्ड (डिफ़ॉल्ट = डेटाटाइमटाइम (16, 00)) ' – SaeX

+0

@SaeX ty, इसे ठीक किया गया। –

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

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