ऑब्जेक्ट के लिए स्वचालित रूप से निर्माण दिनांक सेट करने का सबसे अच्छा तरीका क्या है, और यह भी फ़ील्ड जो ऑब्जेक्ट को आखिरी बार अपडेट किया गया था रिकॉर्ड करेगा?django मॉडल फॉर्म ऑब्जेक्ट्स के लिए स्वचालित निर्माण दिनांक?
अपने मॉडल में मेरे पास है:
created_at = models.DateTimeField(False, True, editable=False)
updated_at = models.DateTimeField(True, True, editable=False)
और मेरे विचार में:
objects_object.created_at may not be NULL
मैं मैन्युअल रूप से यह मान अपने आप को स्थापित करने के लिए है:
if request.method == 'POST':
form = MyForm(request.POST)
if form.is_valid():
obj = form.save(commit=False)
obj.user = request.user
obj.save()
return HttpResponseRedirect('obj_list')
मैं त्रुटि मिलती है ? मैंने सोचा था कि डेटटाइमफ़िल्ड्स को पारित पैरामीटर का बिंदु था (या वे सिर्फ डिफ़ॉल्ट हैं, और चूंकि मैंने 'संपादन योग्य = गलत' सेट किया है, इसलिए वे फॉर्म पर प्रदर्शित नहीं होते हैं, इसलिए अनुरोध में सबमिट न करें , और इसलिए फार्म में नहीं डालते हैं?)।
ऐसा करने का सबसे अच्छा तरीका क्या है? एक init विधि?
धन्यवाद
ps - मैं एक Django और पायथन नौसिखिया ...
'auto_now' और 'auto_now_add' को बुरा माना जाता है, इसलिए उनसे बचने का प्रयास करें। [यह उत्तर] (http://stackoverflow.com/a/1737078/1226722) बताता है कि 'save()' विधि को ओवरराइड करने के लिए बेहतर दृष्टिकोण क्यों प्रदान करता है और प्रदान करता है। – gregoltsov
यह इस त्रुटि का उत्पादन करता है: 'आप बिना किसी डिफ़ॉल्ट के गेमसर को गैर-शून्य फ़ील्ड' create_at 'जोड़ने का प्रयास कर रहे हैं; हम ऐसा नहीं कर सकते (डेटाबेस को मौजूदा पंक्तियों को पॉप्युलेट करने के लिए कुछ चाहिए)। कृपया एक फिक्स का चयन करें: 1) अब एक-ऑफ डिफॉल्ट प्रदान करें (सभी मौजूदा पंक्तियों पर सेट किया जाएगा) 2) छोड़ें, और मुझे मॉडल.py में एक डिफ़ॉल्ट जोड़ें, एक विकल्प का चयन करें: 1 कृपया दर्ज करें डिफ़ॉल्ट मान अब, वैध पायथन के रूप में डेटाटाइम और django.utils.timezone मॉड्यूल उपलब्ध हैं, तो आप उदाहरण के लिए कर सकते हैं timezone.now() >>> timezone.now() ' –
डेटाबेस पर पंक्तियों को हटाएं, या विकल्प 1 जांचें और टाइमज़ोन जोड़ें .now() – mullerivan