किसी ऑब्जेक्ट के लिए निर्माण तिथि को स्वचालित रूप से सेट करने का सबसे अच्छा तरीका क्या है, और यह भी एक फ़ील्ड जो रिकॉर्ड करेगा जब ऑब्जेक्ट अंतिम बार अपडेट किया गया था?
models.py:
created_at = models.DateTimeField(False, True, editable=False)
updated_at = models.DateTimeField(True, True, editable=False)
views.py:
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')
मुझे त्रुटि मिली:
objects_object.created_at may not be NULL
क्या मुझे स्वयं यह मान स्वयं सेट करना होगा? मैंने सोचा था कि पारित किए गए मापदंडों का बिंदु था DateTimeField
(या वे सिर्फ चूक हैं, और चूंकि मैंने सेट किया है editable=False
कि वे फॉर्म पर प्रदर्शित नहीं होते हैं, इसलिए अनुरोध में सबमिट नहीं किया जाता है, और इसलिए नहीं मिलता है फार्म में डाल दिया?)।
ऐसा करने का सबसे अच्छा तरीका क्या है? एक __init__
विधि?
auto_now
औरauto_now_add
उन्हें दुष्ट माना जाता है, इसलिए उनसे बचने की कोशिश करें। यह उत्तर बताता है कि क्यों और एक बेहतर तरीका प्रदान करता है, जोsave()
विधि को ओवरराइड करता है।