2012-04-06 16 views
7

django 1.4 का उपयोग कर मेरे पास एक डेटाटाइमफील्ड वाला मॉडल है। मैंने django.utils.timezone को डिफ़ॉल्ट मान के रूप में उपयोग करने के लिए आयात किया।django.utils.timezone बेवकूफ तारीख लौट रहा है?

from django.utils import timezone 
date = models.DateTimeField(default=timezone.now) 

हालांकि मुझे अभी भी डेटटाइमफ़ील्ड के बारे में चेतावनी मिली है जो निष्क्रिय तिथि प्राप्त हुई है। मैं सच करने के लिए USE_TZ निर्धारित किया है तो यह ध्यान रखें datetimes

उत्तर

2

djangos एक डिफ़ॉल्ट दिनांक मान डाल रहा है जो tz को पता नहीं है क्योंकि फ़ील्ड डिफ़ॉल्ट रूप से शून्य नहीं है। सच करने के लिए अशक्त स्थापित करने का मतलब है कि यह सिर्फ इसलिए नहीं है चेतावनी उठाया बजाय शून्य पर करने के लिए तिथि निर्धारित होगा:

date = models.DateTimeField(default=timezone.now, null=True) 
+2

मैं अज्ञानी हो सकता हूं, लेकिन मुझे समझ में नहीं आता कि क्या शून्य है timezone.now() के साथ करने के लिए मूर्खतापूर्ण होना। यदि नल = .now() से सच है तो एक जागरूक वस्तु वापस कर देगा? – AllTradesJack

+0

डिफ़ॉल्ट मान django डालने वाला था टाइमज़ोन जागरूक नहीं था – mobiletim

+0

@mobiletim मैं अभी भी थोड़ा उलझन में हूं, क्यों 'null = True' सेटिंग को त्रुटि दूर कर देगा? –

-1

now()

एक जागरूक या अनुभवहीन datetime उस समय में वर्तमान बिंदु का प्रतिनिधित्व करता है जब USE_TZTrue या False क्रमशः है रिटर्न लौटने की जानी चाहिए।

https://docs.djangoproject.com/en/dev/ref/utils/#django.utils.timezone.now

+0

मैंने यूएसE_TZ को सत्य पर सेट किया है, इसलिए इसे जागरूक डेटाटाइम – mobiletim

-1

मैं इस मुद्दे पक्ष कदम है जानते हैं, लेकिन आप इसके बजाय अपने मैदान पर auto_now_add=True की कोशिश की? आप जो चाहते हैं उसके लिए default का उपयोग करने की आवश्यकता नहीं है।

दूसरी तरफ आपका संस्करण काम करना चाहिए, यदि आपके पास वास्तव में USE_TZ=True है।

मैं कहूंगा कि यह काम करता है, और आपको कहीं से RunTimeWarning मिलता है जहां आप सीधे date फ़ील्ड को डिफ़ॉल्ट रूप से सेट करते हैं और डिफ़ॉल्ट से नहीं। जब चेतावनी अधिक सटीक रूप से ट्रिगर होती है तो इसे कम करने का प्रयास करें।

+0

ऑटो_now_add टाइमज़ोन-जागरूक Django अनुप्रयोगों के लिए खराब शैली है – fangsterr

+0

@fangsterr मई मैं पूछता हूं कि आप ऐसा क्यों सोचते हैं? यदि आप अपने तर्क की व्याख्या भी करेंगे तो यह अधिक उपयोगी होगा। –

+0

देखें http://stackoverflow.com/questions/10195020/why-django-lint-tells-me-the-auto-now-add-is-deprecated – fangsterr

0

मेरे मामले में, मैं इस मुद्दे को प्राप्त जब मैं परीक्षण दौड़ा रखा। यह एक अतीत माइग्रेशन की वजह से है जो टाइमज़ोन के बजाय गलत तरीके से डेटाटाइम का उपयोग करता है। मैं चेतावनी के कारण माइग्रेशन में वापस लौट आया, इसे हटा दिया, फिर से मज़ेदार चला गया। इसने मेरे लिए मुद्दा हल किया।

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