জাঙ্গোতে কি মডেলগুলির একটি ডিফল্ট টাইমস্ট্যাম্প ক্ষেত্র থাকে?


90

জ্যাঙ্গোতে - সমস্ত বস্তুর জন্য কোনও ডিফল্ট টাইমস্ট্যাম্প ক্ষেত্র রয়েছে? এটিই কি আমার মডেলটিতে 'তৈরি হওয়া' জন্য আমাকে স্পষ্টভাবে একটি 'টাইমস্ট্যাম্প' ফিল্ডটি ঘোষণা করতে হবে - বা এটি স্বয়ংক্রিয়ভাবে পাওয়ার কোনও উপায় আছে?

উত্তর:


176

ডিফল্টরূপে এ জাতীয় কোনও জিনিস নয়, তবে একটি যুক্ত করা খুব সহজ। ক্লাসে কেবলমাত্র 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)

33

স্বয়ংক্রিয়ভাবে জ্যাঙ্গো ডিফল্টরূপে কিছু করার মতো শোনায় না। এটি আপনাকে টাইমস্ট্যাম্পের জন্য বাধ্য করবে না।

আমি যদি একটি টাইমস্ট্যাম্প / ফিল্ড নেম ইত্যাদির কথা ভুলে না যেতে চান তবে আমি একটি বিমূর্ত বেস ক্লাস তৈরি করব এবং এটি থেকে সমস্ত মডেল উত্তরাধিকারী করব

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):
    ....

4
এছাড়াও রয়েছে model_utilsজ্যাঙ্গো যা ইতিমধ্যে রয়েছে জন্য TimeStampedModel, কিন্তু আপনি যদি এই প্যাকেজ থেকে অন্য কিছু প্রয়োজন হবে না, শুধু এটা W / O বাড়তি ওজনের রাখা।
সাহসী

@ বোলডনিক আমি সরলতার ভক্ত।
যুজি 'টোমিটা' টমিতা

বেশ শান্ত ... আমি 3 শ্রেণীর যে জন্য একটি টাইমস্ট্যাম্প প্রয়োজন আছে createdএবং updated। এটি পরিষ্কারভাবে এটি করার একটি দুর্দান্ত উপায়।
ron_g

13

আপনি যদি জাঙ্গো-এক্সটেনশনগুলি ব্যবহার করছেন (যা জ্যাঙ্গো-অ্যাডমিন.পি কমান্ড লাইন সহায়কটিতে কার্যকারিতা যুক্ত করার জন্য একটি ভাল অ্যাপ) আপনি এই মডেল ক্ষেত্রগুলি তাদের টাইমস্ট্যাম্পডমডেল থেকে উত্তরাধিকার সূত্রে বা তাদের কাস্টম টাইমস্ট্যাম্প ক্ষেত্রগুলি ব্যবহার করে নিখরচায় পেতে পারেন


5

আপনি জাঙ্গো-এক্সটেনশানগুলি চেষ্টা করতে পারেন

আপনি যদি সময় স্ট্যাম্প বিমূর্ত মডেল ব্যবহার করতে চান

from django_extensions.db.models import TimeStampedModel

class A(TimeStampedModel):
   ...

এটিতে অন্যান্য বিমূর্ত মডেল রয়েছে। আপনি এটি ব্যবহার করতে পারেন।


2

আপনি যদি এই ক্ষেত্রটি সংশোধন করতে সক্ষম হতে চান তবে এর পরিবর্তে নিম্নলিখিতটি সেট করুন auto_now_add=True:

তারিখ জন্য

from datetime import date

models.DateField(default=date.today)

ডেটটাইমের জন্য

from django.utils import timezone

models.DateTimeField(default=timezone.now)

0

আমার মনে হয় আমি সাথে যাব

created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)

ব্যবহার সম্পর্কে আমার কিছু ব্যাখ্যা দরকার need

class TimeStampedModel(models.Model):
    created_on = models.DateTimeField(auto_now_add=True)

    class Meta:
         abstract = True
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.