auto_now
অ্যাট্রিবিউট সেট সহ যে কোনও ক্ষেত্রও উত্তরাধিকার সূত্রে প্রাপ্ত হবে editable=False
এবং তাই অ্যাডমিন প্যানেলে প্রদর্শিত হবে না। আলাপ তৈরীর সম্পর্কে অতীতে হয়েছে auto_now
এবং auto_now_add
আর্গুমেন্ট যাচ্ছি, আর যদিও তারা এখনও বিদ্যমান, আমি তোমাকে ভাল বন্ধ শুধু একটি ব্যবহার করছেন মনে কাস্টম save()
পদ্ধতি ।
সুতরাং, এই কাজটি সঠিকভাবে করার জন্য, আমি আপনার নিজের পদ্ধতিটি ব্যবহার না করার auto_now
বা auto_now_add
তার পরিবর্তে এটি সেট না করা থাকলে (যেমন আইটেমটি প্রথমবার তৈরি হওয়ার সময়) আপডেট save()
হয়েছে তা নিশ্চিত করার জন্য তার পরিবর্তে এটি নির্দিষ্ট করে সুপারিশ করব এবং আইটেমটি প্রতিবার আপডেট করা হোক সংরক্ষিত হয়created
id
modified
আমি জ্যাঙ্গো ব্যবহার করে লিখেছি এমন অন্যান্য প্রকল্পগুলির সাথে ঠিক একই কাজটি করেছি এবং তাই আপনার 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()
বনাম বনাম এই ক্ষেত্রের যুক্তিতে নির্ভর করে থাকার কারণটি দ্বিগুণ:
- উপরোক্ত উত্সাহগুলি তাদের নির্ভরযোগ্যতার সাথে। এই আর্গুমেন্টগুলি প্রতিটি ধরণের ডাটাবেসের যেভাবে জ্যাঙ্গো জানেন যে কীভাবে একটি তারিখ / সময় স্ট্যাম্প ক্ষেত্রের সাথে আচরণ করতে পারে তা নির্ভর করে এবং প্রতিটি প্রকাশের মধ্যেই ভেঙে যায় এবং / অথবা পরিবর্তিত হয় বলে মনে হয় on (আমি বিশ্বাস করি যে সেগুলি সম্পূর্ণরূপে সরিয়ে নেওয়ার আহ্বানের পেছনের প্রেরণা)।
- তারা কেবল ডেটফিল্ড, ডেটটাইমফিল্ড এবং টাইমফিল্ডে কাজ করে এবং এই কৌশলটি ব্যবহার করে আপনি প্রতিবার কোনও আইটেম সংরক্ষণ করার পরে যেকোন ফিল্ড টাইপ স্বয়ংক্রিয়ভাবে তৈরি করতে সক্ষম হন।
django.utils.timezone.now()
বনাম ব্যবহার করুন datetime.datetime.now()
, কারণ এটি datetime.datetime
নির্ভর করে কোনও টিজেড-সচেতন বা নিষ্পাপ বস্তু ফিরিয়ে দেবে settings.USE_TZ
।
ওপি ত্রুটিটি কেন দেখেছিল তার সমাধানের জন্য, আমি ঠিক জানি না, তবে দেখে মনে হচ্ছে এমনটি created
সত্ত্বেও মোটেও জনবহুল নয় auto_now_add=True
। আমার কাছে এটি একটি বাগ হিসাবে দাঁড়িয়েছে এবং উপরে আমার ছোট তালিকার আইটেম # 1টিকে আন্ডারস্কোর করেছে: auto_now
এবং auto_now_add
সর্বোত্তমভাবে ফ্লেকি।