تحديث حقل التاريخ والوقت تلقائيًا في النموذج الأصلي مع Django

StackOverflow https://stackoverflow.com/questions/20927

  •  09-06-2019
  •  | 
  •  

سؤال

عندي نموذجين:الرسالة والمرفق.يتم إرفاق كل مرفق برسالة معينة، باستخدام ExternalKey في نموذج المرفق.يحتوي كلا الطرازين على حقل DateTimeField تلقائي يُسمى محدث.أحاول أن أجعل ذلك عندما يتم حفظ أي مرفق، فإنه يقوم أيضًا بتعيين الحقل المحدث في الرسالة المرتبطة إلى الآن.هذا هو الكود الخاص بي:

def save(self):
    super(Attachment, self).save()
    self.message.updated = self.updated

هل سينجح هذا، وإذا كان بإمكانك شرحه لي، لماذا؟إذا لم يكن الأمر كذلك، كيف يمكنني تحقيق ذلك؟

هل كانت مفيدة؟

المحلول

ستحتاج أيضًا إلى حفظ الرسالة.ثم ينبغي أن تعمل.

نصائح أخرى

يتم تحديث حقول DateTime مع auto_now تلقائيًا عند الاتصال save(), ، لذلك لا تحتاج إلى تحديثها يدويًا.سوف يقوم جانغو بهذا العمل نيابة عنك.

النسخة المناسبة للعمل هي:( انتبه للسطر الأخير self.message.save())

class Message(models.Model):
    updated = models.DateTimeField(auto_now = True)
    ...

class Attachment(models.Model):
    updated = models.DateTimeField(auto_now = True)
    message = models.ForeignKey(Message)

    def save(self):
        super(Attachment, self).save()
        self.message.save()
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top