के साथ काम करता है मुझे लगता है कि समय क्षेत्र प्रबंधन django 1.4 में जोड़ा गया था, इसलिए समस्या काफी नई है।कैसे django समय क्षेत्र model.field के auto_now_add
मैं एक साधारण मॉडल
class Sample(models.Model):
...
date_generated = models.DateTimeField(auto_now_add = True)
इस्तेमाल किया जब मैं एक नव निर्मित रिकॉर्ड अपने विफल रहता है को पुनः प्राप्त करने का प्रयास करें।
min_datetime = datetime.now() - timedelta(seconds = 300)
sample = Sample.objects.get(date_generated__gte = min_datetime)
और सर्वर एक चेतावनी जारी करता है।
DateTimeField received a naive datetime (2012-06-29 15:02:15.074000) while time zone support is active.
मुझे लगता है कि इस समस्या के लिए दो समाधान पता लगा।
settings.py
USE_TZ = False
में समय क्षेत्र प्रबंधन अक्षम लेकिन यह हमेशा desierable नहीं है।
बदलते
कोdate_generated = models.DateTimeField(auto_now_add = True)
date_generated = models.DateTimeField(default=datetime.now())
समाधान उस समय क्षेत्र प्रबंधन
इसका मतलब मैं सिर्फ auto_now उपयोग नहीं कर सकते है या auto_now_add अगर मैं USE_TZ = सच है? – dannyroa
ऐसा लगता है कि 'auto_now' और' auto_now_add' स्वाभाविक रूप से 'datetime.now' का उपयोग करते हैं। Django में टीजेड जागरूक सुविधाओं को सम्मिलित करने के लिए Django के हिस्से पर यह एक अजीब चूक है, फिर भी इस सुंदर प्रमुख को याद आती है, लेकिन इन दो kwargs के भाग्य पर लंबे समय से बहस की गई है। मेरा तर्क यह है कि उन्हें पीछे की संगतता (और पुश-बैक से बचने के लिए) में छोड़ा जा रहा है, लेकिन उन्हें किसी भी प्यार के लिए उम्मीद न करें। बस 'utcnow' के साथ' डिफ़ॉल्ट 'kwarg सेट करें और यदि आप टीजेड को जागरूक डेटाटाइम चाहते हैं, तो' auto_now' या 'auto_now_add' के बारे में चिंता न करें। –
धन्यवाद क्रिस। मुझे नहीं लगता कि "डिफ़ॉल्ट" "auto_now" को बदलने में काम करेगा हालांकि बाद में हमेशा "डिफ़ॉल्ट" होने पर प्रत्येक सहेजने के लिए समय अपडेट किया जाता है, जब फ़ील्ड का कोई मूल्य नहीं होता है। – dannyroa