Django में - क्या सभी वस्तुओं के लिए एक डिफ़ॉल्ट टाइमस्टैम्प क्षेत्र है? यही है, क्या मुझे अपने मॉडल में 'निर्मित' के लिए 'टाइमस्टैम्प' क्षेत्र को स्पष्ट रूप से घोषित करना होगा - या क्या यह स्वचालित रूप से प्राप्त करने का एक तरीका है?
जवाबों:
डिफ़ॉल्ट रूप से ऐसी कोई बात नहीं है, लेकिन एक को जोड़ना सुपर आसान है। बस कक्षा auto_now_add
में पैरामीटर का उपयोग करें DateTimeField
:
created = models.DateTimeField(auto_now_add=True)
आप auto_now
'अपडेटेड' फ़ील्ड के लिए भी उपयोग कर सकते हैं । auto_now
यहाँ के व्यवहार की जाँच करें ।
के लिए auto_now_add
यहाँ ।
इस तरह दोनों क्षेत्रों के साथ एक मॉडल दिखेगा:
class MyModel(models.Model):
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
स्वचालित रूप से ध्वनि नहीं होती है जैसे कि कुछ django डिफ़ॉल्ट रूप से करेगा। यह आपको टाइमस्टैम्प की आवश्यकता के लिए मजबूर नहीं करेगा।
यदि आप टाइमस्टैम्प / फ़ील्डनाम, आदि के बारे में भूलना नहीं चाहते हैं, तो मैं एक सार बेस क्लास बनाऊंगा और उसमें से सभी मॉडल इनहेरिट करूँगा।
class TimeStampedModel(models.Model):
created_on = models.DateTimeField(auto_now_add=True)
class Meta:
abstract = True
इसके wherever.TimeStampedModel
बजाय आयात करने के लिए ऐसा प्रतीत नहीं होता हैdjango.db.models.Model
class MyFutureModels(TimeStampedModel):
....
created
और updated
। यह सफाई से करने का एक शानदार तरीका है।
यदि आप django- एक्सटेंशन (जो django-admin.py कमांड लाइन हेल्पर के लिए कार्यक्षमता जोड़ने के लिए एक अच्छा ऐप है) का उपयोग कर रहे हैं, तो आप इन मॉडल फ़ील्ड को उनके TimeStampedModel से विरासत में प्राप्त करके या अपने कस्टम डेटा स्टैम्प फ़ील्ड का उपयोग करके मुफ्त में प्राप्त कर सकते हैं
आप django- एक्सटेंशन की कोशिश कर सकते हैं
यदि आप समय-स्टैम्प सार मॉडल का उपयोग करना चाहते हैं
from django_extensions.db.models import TimeStampedModel
class A(TimeStampedModel):
...
इसके अन्य सार मॉडल हैं। आप उसका भी उपयोग कर सकते हैं।
मुझे लगता है कि मैं साथ जाऊंगा
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
मुझे उपयोग करने पर कुछ स्पष्टीकरण की आवश्यकता है
class TimeStampedModel(models.Model):
created_on = models.DateTimeField(auto_now_add=True)
class Meta:
abstract = True
model_utils
Django के लिए भी है जिसमें पहले से ही शामिल हैTimeStampedModel
, लेकिन अगर आपको इस पैकेज से कुछ और की आवश्यकता नहीं है, तो बस w / o अतिरिक्त वजन रखें।