auto_nowविशेषता सेट वाला कोई भी फ़ील्ड इनहेरिट भी करेगा editable=Falseऔर इसलिए व्यवस्थापक पैनल में दिखाई नहीं देगा। अतीत में तर्क auto_nowऔर auto_now_addतर्क को दूर करने के बारे में बात की गई है, और हालांकि वे अभी भी मौजूद हैं, मुझे लगता है कि आप कस्टम save()पद्धति का उपयोग करके बेहतर हैं ।
इसलिए, इस काम को ठीक से करने के लिए, मैं अनुशंसा करता हूं कि आप इसका उपयोग न करें auto_nowया auto_now_addइसके बजाय अपने save()तरीके को परिभाषित करें, जो कि createdकेवल तभी अपडेट किया idजाता है जब सेट नहीं किया जाता है (जैसे कि आइटम पहली बार बनाया गया है), और क्या यह modifiedहर बार अपडेट होता है आइटम बच जाता है।
मैंने अन्य प्रोजेक्ट्स के साथ ठीक वही काम किया है जो मैंने Django का उपयोग करके लिखा है, और इसलिए आपका save()ऐसा दिखेगा:
from django.utils import timezone
class User(models.Model):
created = models.DateTimeField(editable=False)
modified = models.DateTimeField()
def save(self, *args, **kwargs):
''' On save, update timestamps '''
if not self.id:
self.created = timezone.now()
self.modified = timezone.now()
return super(User, self).save(*args, **kwargs)
उम्मीद है की यह मदद करेगा!
टिप्पणियों के जवाब में संपादित करें:
कारण है कि मैं सिर्फ save()इन क्षेत्रों के तर्कों पर भरोसा करते हुए ओवरलोडिंग के साथ चिपक जाता हूं , दो गुना है:
- उपर्युक्त उतार-चढ़ाव उनकी विश्वसनीयता के साथ। ये तर्क प्रत्येक प्रकार के डेटाबेस पर बहुत अधिक निर्भर हैं जो कि Django जानता है कि किसी दिनांक / समय स्टैम्प फ़ील्ड के साथ कैसे व्यवहार किया जाए, और हर रिलीज़ के बीच टूटने और / या बदलने के लिए लगता है। (जो मुझे लगता है कि उन्हें पूरी तरह से हटाने के लिए कॉल के पीछे प्रेरणा है)।
- तथ्य यह है कि वे केवल DateField, DateTimeField और TimeField पर काम करते हैं, और इस तकनीक का उपयोग करके आप किसी भी आइटम को सहेजे जाने पर किसी भी फ़ील्ड प्रकार को स्वचालित रूप से पॉप्युलेट करने में सक्षम होते हैं।
django.utils.timezone.now()बनाम का उपयोग करें datetime.datetime.now(), क्योंकि यह एक TZ- जागरूक या अनुभवहीन datetime.datetimeवस्तु पर निर्भर करेगा settings.USE_TZ।
यह पता करने के लिए कि ओपी ने त्रुटि क्यों देखी, मुझे ठीक से पता नहीं है, लेकिन ऐसा लगता createdहै कि होने के बावजूद भी बिल्कुल भी आबादी नहीं है auto_now_add=True। मेरे लिए यह एक बग के रूप में बाहर खड़ा है, और ऊपर मेरी छोटी सूची में # 1 आइटम को रेखांकित करता है: auto_nowऔर auto_now_addसबसे अच्छे रूप में परतदार हैं।