জ্যাঙ্গো অটো_নো এবং অটো_নো_আডি


272

জাজানো 1.1 এর জন্য 1.

আমার মডেলগুলিতে এটি আছে py

class User(models.Model):
    created = models.DateTimeField(auto_now_add=True)
    modified = models.DateTimeField(auto_now=True)

একটি সারি আপডেট করার সময় আমি পাই:

[Sun Nov 15 02:18:12 2009] [error] /home/ptarjan/projects/twitter-meme/django/db/backends/mysql/base.py:84: Warning: Column 'created' cannot be null
[Sun Nov 15 02:18:12 2009] [error]   return self.cursor.execute(query, args)

আমার ডাটাবেসের প্রাসঙ্গিক অংশটি হ'ল:

  `created` datetime NOT NULL,
  `modified` datetime NOT NULL,

এই উদ্বেগ কারণ?

পার্শ্ব প্রশ্ন: আমার প্রশাসক সরঞ্জামে, এই দুটি ক্ষেত্র প্রদর্শিত হচ্ছে না। এটা কি প্রত্যাশিত?


3
আপনি কি ডিফল্ট অটো-ইনক্রিমেন্ট ইন্টের পরিবর্তে একটি কাস্টম প্রাথমিক কী ব্যবহার করছেন? আমি আবিষ্কার করেছি যে একটি কাস্টম প্রাথমিক কী ব্যবহার করার ফলে এই সমস্যা দেখা দেয়। যাইহোক, আমার ধারণা আপনি এখনই এটি সমাধান করে দিয়েছেন। তবে বাগটি এখনও বিদ্যমান। মাত্র আমার 0.02 $
তপন

3
স্মরণ করিয়ে দেওয়ার জন্য আরও একটি জিনিস। update()পদ্ধতিটি কল করবে না save()যার অর্থ এটি modifiedস্বয়ংক্রিয়ভাবে ক্ষেত্রটি আপডেট করতে পারে না
রাসায়নিক প্রোগ্রামার

উত্তর:


383

auto_nowঅ্যাট্রিবিউট সেট সহ যে কোনও ক্ষেত্রও উত্তরাধিকার সূত্রে প্রাপ্ত হবে editable=Falseএবং তাই অ্যাডমিন প্যানেলে প্রদর্শিত হবে না। আলাপ তৈরীর সম্পর্কে অতীতে হয়েছে auto_nowএবং auto_now_addআর্গুমেন্ট যাচ্ছি, আর যদিও তারা এখনও বিদ্যমান, আমি তোমাকে ভাল বন্ধ শুধু একটি ব্যবহার করছেন মনে কাস্টম save()পদ্ধতি

সুতরাং, এই কাজটি সঠিকভাবে করার জন্য, আমি আপনার নিজের পদ্ধতিটি ব্যবহার না করার auto_nowবা auto_now_addতার পরিবর্তে এটি সেট না করা থাকলে (যেমন আইটেমটি প্রথমবার তৈরি হওয়ার সময়) আপডেট save()হয়েছে তা নিশ্চিত করার জন্য তার পরিবর্তে এটি নির্দিষ্ট করে সুপারিশ করব এবং আইটেমটি প্রতিবার আপডেট করা হোক সংরক্ষিত হয়createdidmodified

আমি জ্যাঙ্গো ব্যবহার করে লিখেছি এমন অন্যান্য প্রকল্পগুলির সাথে ঠিক একই কাজটি করেছি এবং তাই আপনার 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()বনাম বনাম এই ক্ষেত্রের যুক্তিতে নির্ভর করে থাকার কারণটি দ্বিগুণ:

  1. উপরোক্ত উত্সাহগুলি তাদের নির্ভরযোগ্যতার সাথে। এই আর্গুমেন্টগুলি প্রতিটি ধরণের ডাটাবেসের যেভাবে জ্যাঙ্গো জানেন যে কীভাবে একটি তারিখ / সময় স্ট্যাম্প ক্ষেত্রের সাথে আচরণ করতে পারে তা নির্ভর করে এবং প্রতিটি প্রকাশের মধ্যেই ভেঙে যায় এবং / অথবা পরিবর্তিত হয় বলে মনে হয় on (আমি বিশ্বাস করি যে সেগুলি সম্পূর্ণরূপে সরিয়ে নেওয়ার আহ্বানের পেছনের প্রেরণা)।
  2. তারা কেবল ডেটফিল্ড, ডেটটাইমফিল্ড এবং টাইমফিল্ডে কাজ করে এবং এই কৌশলটি ব্যবহার করে আপনি প্রতিবার কোনও আইটেম সংরক্ষণ করার পরে যেকোন ফিল্ড টাইপ স্বয়ংক্রিয়ভাবে তৈরি করতে সক্ষম হন।
  3. django.utils.timezone.now()বনাম ব্যবহার করুন datetime.datetime.now(), কারণ এটি datetime.datetimeনির্ভর করে কোনও টিজেড-সচেতন বা নিষ্পাপ বস্তু ফিরিয়ে দেবে settings.USE_TZ

ওপি ত্রুটিটি কেন দেখেছিল তার সমাধানের জন্য, আমি ঠিক জানি না, তবে দেখে মনে হচ্ছে এমনটি createdসত্ত্বেও মোটেও জনবহুল নয় auto_now_add=True। আমার কাছে এটি একটি বাগ হিসাবে দাঁড়িয়েছে এবং উপরে আমার ছোট তালিকার আইটেম # 1টিকে আন্ডারস্কোর করেছে: auto_nowএবং auto_now_addসর্বোত্তমভাবে ফ্লেকি।


9
তবে লেখকের সমস্যার উত্স কী? অটো_নো_আড্ড কখনও কখনও ভুলভাবে কাজ করে?
দিমিত্রি রাইজনবার্গ

5
আমি তোমার সাথে দিমিত্রি আমি কেন আগ্রহী যে কেন দুটি ক্ষেত্র ত্রুটি ছুঁড়েছে .. এবং আমি আরও কৌতূহল বোধ করি কেন আপনি নিজের কাস্টম সেভ () পদ্ধতি লেখার চেয়ে ভাল মনে করেন কেন?
হোরা

45
save()আমার প্রতিটি মডেলটিতে একটি কাস্টম লেখা ব্যবহার করার চেয়ে অনেক বেশি বেদনাদায়ক auto_now(যেমনটি আমি আমার সমস্ত মডেলগুলিতে এই ক্ষেত্রগুলি রাখতে চাই)। কেন এই প্যারামগুলি কাজ করে না?
পল টারজান

3
@ টিএম, তবে এটির জন্য আপনার ডিবিতে সরাসরি ফিডিং দরকার যখন জ্যাঙ্গো কেবলমাত্র মডেল.পি ফাইলগুলি স্কিমাটি সংজ্ঞায়িত করার জন্য লক্ষ্য করেছে
আকাইহোলা

11
আমি দৃ ve়ভাবে, একমত। 1) সম্পাদনাযোগ্য = মিথ্যা সঠিক, আপনার ক্ষেত্রে ক্ষেত্রটি সম্পাদনা করা উচিত নয়, আপনার ডাটাবেসটি সঠিক হওয়া দরকার। 2) প্রান্তের সমস্ত ধরণের কেস রয়েছে যেখানে সংরক্ষণ () না বলা যেতে পারে, বিশেষত যখন কাস্টম এসকিউএল আপডেট হয় বা যা কিছু ব্যবহৃত হয়। 3) এটি এমন কিছু যা ডাটাবেসগুলি আসলে খুব ভাল, পাশাপাশি রেফারেন্সিয়াল অখণ্ডতা এবং। ডাটাবেসটি ঠিকভাবে পেতে বিশ্বাস করা একটি ভাল ডিফল্ট, কারণ আপনি বা আমি তুলনায় স্মার্ট মাইন্ডস এইভাবে কাজ করার জন্য ডেটাবেস ডিজাইন করেছি।
শায়নে

175

তবে আমি এটি উল্লেখ করতে চেয়েছিলাম যে গৃহীত উত্তরে প্রকাশিত মতামতটি কিছুটা পুরানো। আরও সাম্প্রতিক আলোচনার অনুসারে (জ্যাঙ্গো বাগ # 7634 এবং # 12785 ), অটো_নো এবং অটো_নো_এড কোথাও যাচ্ছে না এবং আপনি যদি মূল আলোচনায় যান , আপনি কাস্টম সেভে আরওয়াই (ডিআরওয়াই হিসাবে) এর বিরুদ্ধে শক্ত যুক্তি খুঁজে পাবেন you'll পদ্ধতি।

এর চেয়ে ভাল সমাধানের প্রস্তাব দেওয়া হয়েছে (কাস্টম ফিল্ডের ধরণ), তবে এটি জাঙ্গোতে পরিণত করতে যথেষ্ট গতি অর্জন করতে পারেনি। আপনি তিনটি লাইনে নিজের লিখতে পারেন (এটি জ্যাকব কাপলান-মস'র পরামর্শ )।

from django.db import models
from django.utils import timezone


class AutoDateTimeField(models.DateTimeField):
    def pre_save(self, model_instance, add):
        return timezone.now()

#usage
created_at = models.DateField(default=timezone.now)
updated_at = models.AutoDateTimeField(default=timezone.now)

1
তিনটি লাইনের কাস্টম ক্ষেত্রটি এখানে: লিঙ্ক
hgcrpd

আমি মনে করি না যে আপনি একটি কলযোগ্য (যেমন, টাইমজোন.নো) -এ ডিফল্ট সেট করতে পারেন এমন একটি কাস্টম ফিল্ড সত্যই প্রয়োজনীয় necessary আমার উত্তর নীচে দেখুন।
জোশ

6
জ্যাঙ্গোতে অটো_আড্ড একই জিনিসটি করে এবং এটি ২০১০ সাল থেকে: github.com/django/django/blob/1.8.4/django/db/models/fields/… । পূর্ব_সেভে আমার অতিরিক্ত হুক না লাগলে আমি অটো_এডিডি দিয়ে স্টিক করছি।
jwhitlock

1
জ্যাঙ্গো ১.৯ এর সাথে আমার পক্ষে কাজ করেনি, সুতরাং এই সমাধানটি সর্বত্র কাজ করছে না, কারণ এটি কখনও অটো_নো * এর পক্ষে ছিল না। একমাত্র সমাধান যা প্রতিটি ব্যবহারের ক্ষেত্রে কাজ করে (এমনকি 'আপডেট_ফিল্ডস' আরগ সমস্যার সাথেও)
সেভকে

4
আপনি ডিফল্টকে টাইমজোন.নোতে কেন সেট করেন, তবে প্রাক-সংরক্ষণের সিগন্যালটি ডেটটাইম.ডেটটাইম.নো ব্যবহার করছে?
বোবার্ট

32

একটি পার্শ্ব প্রশ্ন সম্পর্কে কথা বলা: আপনি যদি এই ক্ষেত্রগুলি অ্যাডমিনে দেখতে চান (যদিও, আপনি এটি সম্পাদনা করতে সক্ষম হবেন না), আপনি readonly_fieldsনিজের প্রশাসক শ্রেণিতে যুক্ত করতে পারেন ।

class SomeAdmin(ModelAdmin):
    readonly_fields = ("created","modified",)

ভাল, এটি কেবলমাত্র সর্বশেষ জ্যাঙ্গো সংস্করণগুলিতে প্রযোজ্য (আমি বিশ্বাস করি, ১.৩ এবং তার বেশি)


3
গুরুত্বপূর্ণ লক্ষণীয়: এটি XxAdminক্লাসে যুক্ত করা উচিত । আমি এটি খুব তাড়াতাড়ি পড়েছি এবং এটি আমার AdminFormবা ModelFormক্লাসগুলিতে যুক্ত করার চেষ্টা করেছি এবং কেন তারা "কেবলমাত্র পঠনযোগ্য ক্ষেত্রগুলি" উপস্থাপন করছে না তার কোনও ধারণা নেই। বিটিডাব্লু, কি কোনও ফর্মের মধ্যে সত্যিকারের "পঠনযোগ্য ক্ষেত্রগুলি থাকার সম্ভাবনা আছে?
টমাসজ গ্যান্ডোর

28

আমি মনে করি যে এখানে সবচেয়ে সহজ (এবং সম্ভবত সবচেয়ে মার্জিত) সমাধান হ'ল আপনি যে কল করতে সক্ষম defaultতা নির্ধারণ করতে পারেন le সুতরাং, অ্যাডমিনের অটো_নো'র বিশেষ হ্যান্ডলিংটি পেতে, আপনি ঠিক তেমন ফিল্ডটি ঘোষণা করতে পারেন:

from django.utils import timezone
date_filed = models.DateField(default=timezone.now)

এটি গুরুত্বপূর্ণ যে আপনি timezone.now()ডিফল্ট মান হিসাবে আপডেট করবেন না হিসাবে ব্যবহার করবেন না (উদাহরণস্বরূপ, কোডটি লোড হয়ে গেলে কেবল ডিফল্ট সেট হয়ে যায়)। যদি আপনি নিজেকে এটি অনেক কিছু করতে দেখেন তবে আপনি একটি কাস্টম ফিল্ড তৈরি করতে পারেন। যাইহোক, এটি ইতিমধ্যে আমি মনে করি এটি বেশ শুকনো।


2
একটি ডিফল্ট হ'ল অটো_নো_অ্যাডের সমতুল্য (প্রথমে যখন বস্তুটি সংরক্ষণ করা হয় তখন সেট মান) তবে এটি অটো_নোয়ের মতো নয় (প্রতিটি বার বস্তুটি সংরক্ষণ করার পরে সেট মান)।
শাই বার্জার

1
@ শেইবার্গার, আমি মনে করি তারা একটি গুরুত্বপূর্ণ উপায়ে সূক্ষ্মতা থেকে আলাদা। ডকটি সূক্ষ্মতা বলেছিলেন: "ক্ষেত্রটি স্বয়ংক্রিয়ভাবে সেট করুন ...; এটি কেবলমাত্র একটি ডিফল্ট মান নয় যা আপনি ওভাররাইড করতে পারেন" " - docs.djangoproject.com/en/dev/ref/models/fields/…
টমাস - বিডেস্ক

@ থমাস-বিডেস্ক: সম্মত। সুতরাং, "আরও বা কম সমতুল্য"।
শাই বার্গার

1
আপনি মাইগ্রেশন ব্যবহার করছেন যদি এই সমাধানটি খারাপভাবে কাজ করে। যতবার আপনি makemigrationsএটি চালনা করেন ততক্ষণ আপনি চালনার সময়টিকে ডিফল্টকে ব্যাখ্যা করে makemigrationsএবং তাই ডিফল্ট মানটি পরিবর্তিত হয়েছে বলে মনে করে!

8
@ হিঙ্কল, আপনি কি নিশ্চিত যে আপনি কী default=timezone.now()প্রস্তাবিত হচ্ছেন তার চেয়ে নির্দিষ্ট করে দিচ্ছেন না: default=timezine.now(কোনও বন্ধনী নেই)?
জোশ

18

আপনি যদি নিজের মডেলের শ্রেণিটি এভাবে পরিবর্তন করেন:

class MyModel(models.Model):
    time = models.DateTimeField(auto_now_add=True)
    time.editable = True

তারপরে এই ক্ষেত্রটি আমার অ্যাডমিন পরিবর্তন পৃষ্ঠায় প্রদর্শিত হবে


1
তবে এটি সম্পাদনা রেকর্ডে কেবল কাজ করে। যখন আমি নতুন রেকর্ড তৈরি করি - তারিখের টাইল মানটিকে অগ্রাহ্য করা হয়। আমি যখন এই রেকর্ডটি পরিবর্তন করি - নতুন মান সেট করা হয়।
আন্তন ডানিলচেনকো

2
ওয়ার্কস কিন্তু এটি models.DatetimeField পরিবর্তে models.DateTimeField হতে shoud
matyas

2
ব্যর্থ হয়েছে python manage.py makemigrations: কী-এরর: u'edable '
laoyur

12

আমি এখনও যা পড়েছি এবং জ্যাঙ্গোর সাথে আমার অভিজ্ঞতার ভিত্তিতে, অটো_নো_এডিটি বগি। আমি জ্যাথানিজমের সাথে একমত --- এটি সংরক্ষণের স্বাভাবিক সংরক্ষণ পদ্ধতিটি ওভাররাইড করে এবং কী ঘটছে তা আপনি জানেন। এখন এটি শুষ্ক করতে টাইমস্ট্যাম্পড নামে একটি বিমূর্ত মডেল তৈরি করুন:

from django.utils import timezone

class TimeStamped(models.Model):
    creation_date = models.DateTimeField(editable=False)
    last_modified = models.DateTimeField(editable=False)

    def save(self, *args, **kwargs):
        if not self.creation_date:
            self.creation_date = timezone.now()

        self.last_modified = timezone.now()
        return super(TimeStamped, self).save(*args, **kwargs)

    class Meta:
        abstract = True

এবং তারপরে, আপনি যখন এমন মডেল চান যা এই সময়ের স্ট্যাম্পি আচরণ করে, কেবল সাবক্লাস:

MyNewTimeStampyModel(TimeStamped):
    field1 = ...

আপনি যদি ক্ষেত্রগুলি অ্যাডমিনে প্রদর্শিত হতে চান তবে কেবল editable=Falseবিকল্পটি সরিয়ে দিন


1
timezone.now()আপনি এখানে কোনটি ব্যবহার করছেন? আমি ধরে নিচ্ছি django.utils.timezone.now(), তবে আমি ইতিবাচক নই। এছাড়াও, কেন ব্যবহার timezone.now()না করে datetime.datetime.now()?
coredumperror

1
ভাল দিক. আমি আমদানির বিবৃতি যুক্ত করেছি। timezone.now()এটি ব্যবহারের কারণ হ'ল এটি সময় অঞ্চল সচেতন, যেখানে datetime.datetime.now()টাইমজোন নিরীহ। আপনি এটি সম্পর্কে এখানে পড়তে পারেন: ডকস.ডজ্যাঙ্গোপ্রজেক্ট.com
এডওয়ার্ড

@ অ্যাডওয়ার্ডওয়েল ক্ষেত্র নির্মাতার পরিবর্তে আপনি কেন সংরক্ষণে ক্রিয়েশন_ডেট সেট করার জন্য বেছে নিয়েছিলেন default=timezone.now?
ব্লেকাগল52

হুম .. সম্ভবত আমি এটি সম্পর্কে ভাবিনি, এটি আরও ভাল শোনাচ্ছে।
এডওয়ার্ড নেওয়েল

2
ঠিক আছে এমন একটি কেস রয়েছে যেখানে শেষ_মোডিফাইড আপডেট করা হবে না: যখন update_fieldsআরগ সরবরাহ করা হয় এবং 'শেষ_মোডিফাইড' তালিকায় নেই, আমি যুক্ত করব:if 'update_fields' in kwargs and 'last_modifed' not in kwargs['update_fields']: kwargs['update_fields'].append('last_modified')
ড্যানিয়াস

5

এই উদ্বেগ কারণ?

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

পার্শ্ব প্রশ্ন: আমার প্রশাসক সরঞ্জামে, এই 2 টি ক্ষেত্র প্রদর্শিত হচ্ছে না। এটা কি প্রত্যাশিত?

যেহেতু এই ক্ষেত্রগুলি স্বয়ংক্রিয়ভাবে যুক্ত হয়, সেগুলি প্রদর্শিত হয় না।

উপরোক্ত বিষয়গুলি যুক্ত করার জন্য, সিনাক বলেছে যে এটি মুছে ফেলার জন্য জাঙ্গো মেলিং তালিকায় একটি বিতর্ক হয়েছে, কারণ এটি "ভালভাবে ডিজাইন করা হয়নি" এবং এটি "একটি হ্যাক"

আমার প্রতিটি মডেলটিতে কাস্টম সেভ () লিখে অটো_নো ব্যবহারের চেয়ে অনেক বেশি ব্যথা হয়

স্পষ্টতই আপনাকে এটি প্রতিটি মডেলটিতে লিখতে হবে না। আপনি এটি একটি মডেলটিতে লিখতে এবং এটির থেকে অন্যদের উত্তরাধিকারী করতে পারেন।

তবে auto_addএবং যেমন auto_now_addরয়েছে, আমি নিজে নিজে কোনও পদ্ধতি লেখার চেষ্টা না করে এগুলি ব্যবহার করব।


3

আমার আজ কাজের মতো কিছু দরকার ছিল। ডিফল্ট মান timezone.now()হ'ল তবে এডমিন এবং শ্রেণি দর্শন উভয় ক্ষেত্রেই উত্তরাধিকার সূত্রে সম্পাদনযোগ্য FormMixin, সুতরাং আমার models.pyনিম্নলিখিত কোডটিতে তৈরি করা সেই প্রয়োজনীয়তা পূরণ করেছে:

from __future__ import unicode_literals
import datetime

from django.db import models
from django.utils.functional import lazy
from django.utils.timezone import localtime, now

def get_timezone_aware_now_date():
    return localtime(now()).date()

class TestDate(models.Model):
    created = models.DateField(default=lazy(
        get_timezone_aware_now_date, datetime.date)()
    )

জন্য DateTimeField, আমি অপসারণ অনুমান .date()ফাংশন এবং পরিবর্তন datetime.dateকরতে datetime.datetimeবা ভাল timezone.datetime। আমি এটি দিয়ে চেষ্টা করি নি DateTime, কেবল সাথেই Date


2

আপনি timezone.now()তৈরি এবং auto_nowপরিবর্তিত জন্য ব্যবহার করতে পারেন :

from django.utils import timezone
class User(models.Model):
    created = models.DateTimeField(default=timezone.now())
    modified = models.DateTimeField(auto_now=True)

আপনাকে ডিফল্ট পরিবর্তে একটি কাস্টম প্রাথমিক কী ব্যবহার করেন তাহলে auto- increment int, auto_now_addএকটি বাগ হতে হবে।

এখানে জ্যাঙ্গো ডিফল্ট এর কোড হল DateTimeField.pre_save সঙ্গে auto_nowএবং auto_now_add:

def pre_save(self, model_instance, add):
    if self.auto_now or (self.auto_now_add and add):
        value = timezone.now()
        setattr(model_instance, self.attname, value)
        return value
    else:
        return super(DateTimeField, self).pre_save(model_instance, add)

প্যারামিটারটি কী তা আমি নিশ্চিত নই add। আমি আশা করি এটি কিছু মত হবে:

add = True if getattr(model_instance, 'id') else False

নতুন রেকর্ডটিতে অ্যাটর থাকবে না id, সুতরাং getattr(model_instance, 'id')মিথ্যা ফিরিয়ে দেবে ক্ষেত্রের কোনও মান সেট না করে।


7
আমি লক্ষ্য করেছি যে আমরা যদি ডিফল্টকে টাইমজোন.নু () হিসাবে রাখি, আপনি যখন মাইগ্রেশন করেন, আসল তারিখ এবং সময় (এই মুহুর্তের) মাইগ্রেশন ফাইলে চলে যায়। আমি মনে করি যেহেতু আপনি যতবার মেকিমিগ্রেশনগুলি কল করবেন এই ক্ষেত্রটির আলাদা মূল্য থাকবে বলে আমাদের এড়ানো উচিত।
করণ কুমার

2

আপনার অ্যাডমিন প্রদর্শন হিসাবে, এই উত্তর দেখুন

দ্রষ্টব্য: auto_nowএবং ডিফল্টরূপে auto_now_addসেট করা editable=Falseহয়, এ কারণেই এটি প্রযোজ্য।


1

auto_now=Trueজ্যাঙ্গো ১.৪.১ এ আমার পক্ষে কাজ করেনি, তবে নীচের কোডটি আমাকে রক্ষা করেছে। এটি সময় অঞ্চল সচেতন তারিখের জন্য for

from django.utils.timezone import get_current_timezone
from datetime import datetime

class EntryVote(models.Model):
    voted_on = models.DateTimeField(auto_now=True)

    def save(self, *args, **kwargs):
        self.voted_on = datetime.now().replace(tzinfo=get_current_timezone())
        super(EntryVote, self).save(*args, **kwargs)

1
class Feedback(models.Model):
   feedback = models.CharField(max_length=100)
   created = models.DateTimeField(auto_now_add=True)
   updated = models.DateTimeField(auto_now=True)

এখানে, আমরা কলামগুলি তৈরি করেছি এবং আপডেট করেছি যেগুলি তৈরি করার সময় একটি টাইমস্ট্যাম্প থাকবে এবং যখন কেউ প্রতিক্রিয়া পরিবর্তন করবে।

অটো_নো_এডিডি সময় সেট করবে যখন কোনও উদাহরণ তৈরি হবে যখন অটো_নো সময় সেট করবে যখন কেউ তার মতামত পরিবর্তন করে mod


-1

আপনি দক্ষিণ ব্যবহার করছেন এবং আপনি ডেটাবেজে ক্ষেত্রটি যুক্ত করার তারিখে আপনি ডিফল্ট করতে চান তবে এখানে উত্তরটি দেওয়া হচ্ছে:

তারপরে বিকল্প 2 চয়ন করুন : ডেটটাইম.ডেটটাইম.নো ()

এটা এমন দেখতে:

$ ./manage.py schemamigration myapp --auto
 ? The field 'User.created_date' does not have a default specified, yet is NOT NULL.
 ? Since you are adding this field, you MUST specify a default
 ? value to use for existing rows. Would you like to:
 ?  1. Quit now, and add a default to the field in models.py
 ?  2. Specify a one-off value to use for existing columns now
 ? Please select a choice: 2
 ? Please enter Python code for your one-off default value.
 ? The datetime module is available, so you can do e.g. datetime.date.today()
 >>> datetime.datetime.now()
 + Added field created_date on myapp.User

আপডেট হবে এটি: তারিখের সময় এবং django.utils.Timezone মডিউল উপলব্ধ, তাই আপনি উদাহরণস্বরূপ করতে পারেন
টাইমজোন.উন

আপনার মডেলটি কী ডেটা অনুপস্থিত যখন এটির জন্য একটি প্রশ্নকর্তা। আপনি যদি আপনার মডেলটি সঠিকভাবে সেট আপ করেন তবে আপনার কখনই এই প্রম্পটটি দেখার দরকার নেই।
শায়নে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.