2012-04-17 17 views
7

हाय साथी Djangonauts:django-lint मुझे बताता है कि 'auto_now_add` को बहिष्कृत क्यों किया गया है?

मैं django-lint साथ अपने प्रोजेक्ट की जाँच की है, और यह पैदावार:

W:211,16:MyModel: timestamp: Uses superceded auto_now or auto_now_add 

commit message:

auto_now/auto_now_add not technically deprecated, but they still suck. 

क्यों वे कहते हैं auto_now/auto_now_add "चूसना" करते हैं? मुझे इन दो फ़ील्ड पैरामीटर के साथ बनाए गए/आखिरी अद्यतन पैटर्न को लागू करने में कोई समस्या नहीं थी।

इस प्रतिरूप के लिए एक बेहतर दृष्टिकोण है? कस्टम फील्ड कक्षाएं? और क्यों (यदि यह दृष्टिकोण बेहतर है) इसे Django में एकीकृत नहीं किया गया है?

उत्तर

11

सही ठीक के रूप में एक प्रतिदेय पारित करने के लिए है क्षेत्र के default कि उचित दिनांक देता है, जैसे datetime.datetime.now

+1

एक कह सकते हैं कि 'auto_now_add = TRUE' के लिए' डिफ़ॉल्ट = datetime.now(), संपादन योग्य = झूठी, खाली = TRUE' एक शॉर्टकट है। लेकिन 'auto_now = True' को कैसे कार्यान्वित करें? –

+1

'सेव()' विधि को ओवरराइड करें, और इसे वहां सेट करें। –

+2

इसके अलावा, 'डिफ़ॉल्ट = डेटाटाइम .now'। –

2

auto_now और auto_now_add हानिकारक माना जाता है, क्योंकि आपके पास django के माध्यम से मूल्य बदलने का बिल्कुल कोई तरीका नहीं है (उदाहरण के लिए, व्यवस्थापक इंटरफ़ेस में)।

यह अन्य झंडे के साथ एक inconsitency है, और Django लोग आम तौर पर जादू की इस प्रकार की तरह नहीं है।

+8

एक ऐसा क्षेत्र जो निर्माण समय को दर्शाता है (या अंतिम संशोधन समय) व्यवस्थापक में संपादन योग्य होने के लिए मुझे अधिक समझ में नहीं आता है। –

+1

कभी-कभी आप नकली चीजें चाहते हैं। बैकअप और उनकी बहाली पर विचार करें। – ch3ka

+9

मुझे अभी आश्वस्त किया गया है कि मैं कभी भी DjangoLint का उपयोग नहीं करना चाहता हूं। यदि auto_add और auto_add_new में कोई वास्तविक दोष है, तो उन्हें ठीक किया जाना चाहिए। लेकिन यह मामला यहां नहीं है। ध्यान में रखते हुए कुछ है कि आप बुरा होना उपयोग करने के लिए है क्योंकि यह अपने व्यक्तिगत आवश्यकताओं को पूरा नहीं करता है की आवश्यकता नहीं है संकीर्ण और अदूरदर्शी है। इसका उपयोग न करें और यह न सोचें कि आप सभी की आवश्यकताओं को समझते हैं। कई लोगों के लिए, तथ्य यह है कि मूल्य आसानी से बदला नहीं जा सकता है एक सुविधा है, बग नहीं। चीजें जो कुछ लोगों को पसंद नहीं करती हैं, वे लिंट कार्यक्रम में नहीं हैं। –

संबंधित मुद्दे

 संबंधित मुद्दे