اذهب إلى المحتوى

السؤال

نشر

عندما أحاول أن أقوم بعمل حقل updated_at في نموذج model معين وجدت عدة طرق للقيام بهذا الأمر، من هذه الطرق إستخدام حقل DateField ولكن وجدت أنه يحتاج إلى تمرير قيمتين، وهما:

  • auto_now
  • auto_now_add 

ما الفرق بينهما؟ ومتى أجعل كلًا منهما يساوي True؟

Recommended Posts

  • 1
نشر
بتاريخ 5 دقائق مضت قال Mohssen A Mohssen:

عندما أحاول أن أقوم بعمل حقل updated_at في نموذج model معين وجدت عدة طرق للقيام بهذا الأمر، من هذه الطرق إستخدام حقل DateField ولكن وجدت أنه يحتاج إلى تمرير قيمتين، وهما:

  • auto_now
  • auto_now_add 

ما الفرق بينهما؟ ومتى أجعل كلًا منهما يساوي True؟

auto_now : عند استخدامها تقوم بتحدث قيمه الحقل  الى الوقت والتاريخ الحاليين 

auto_now_add تقوم بتحديث القيمه مع وقت وتاريخ انشاء السجل 

  • 1
نشر

auto_now  يقوم بتحديث الحقل في كل مرة ، بينما auto_now_add  يقوم بتحديث الحقل عند الإنشاء فقط.

 class DateField(auto_now=True, auto_now_add=False, **options)  #تحديث الحقل في كل مرة

 class DateField(auto_now=False, auto_now_add=True, **options)  #تحديث الحقل عند الإنشاء فقط

وفقًا لوثائق django عند اعطاء قيمة True  لكل من auto_now و auto_now_add في models الخاصة بك  سيؤدي إلى حدوث خطأ لأن كلاهما متنافيان.

 class DateField(auto_now=True, auto_now_add=True, **options)  #يسبب في خطأ

 

  • 1
نشر

بشكل أساسي نقوم باستعمال auto now عندما نريد التاريخ أن يتحدث في كل تعديل، مثلا في حال كنت تقوم بتصميم موقع يحتوي على مراجعات زوار الموقع، فإنه يمكن لك أن تستعمل هذه الخاصية لتنشئ وسم على المراجعة الخاصة بالزائر تدل على آخر تعديل قام به هذا الزائر على المراجعة الخاصة به.

بينما نقوم باستعمال auto now add في حال كنا نريد تاريخ الإنشاء فقط، يمكنك استعمال ذلك مثلاً إذا كان لديك متجر و تقوم بإضافة البضائع إليه، فيمكن وضع تاريخ الإضافة فقط و ليس تاريخ كل تعديل، كما يمكنك بنفس مثال مراجعات الزوار السابق أن تضيف وسم يدل على تاريخ إنشاء المراجعة كإضافة على تاريخ آخر تعديل الذي تحدثت عنه سابقاً.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...