Django:如何在对象创建期间更新另一个模型的字段

2024-05-05 00:38:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个简单的聊天应用程序。在

class Thread(models.Model):
     participants = models.ManyToManyField(User)
     last_message_time = models.DateTimeField(null=True, blank=True)

class NewMessage(models.Model):
     message = models.CharField(max_length=500)
     sender = models.ForeignKey(User)
     thread = models.ForeignKey(Thread, related_name = 'thread_to_message')
     datetime = models.DateTimeField(auto_now_add=True)

每次创建一个NewMessage对象时,我都想用刚创建的NewMessage对象的datetime更新线程模型中的最后一个“消息”时间。我该怎么做呢?在


Tags: 对象true应用程序messagedatetimemodelmodelsthread
1条回答
网友
1楼 · 发布于 2024-05-05 00:38:37

最简单的方法可能是使用post_save信号处理程序来处理NewMessage。在

from django.db.models.signals import post_save

def update_thread(sender, **kwargs):
    instance = kwargs['instance']
    created = kwargs['created']
    raw = kwargs['raw']
    if created and not raw:
        instance.thread.last_message_time = instance.datetime
        instance.thread.save()

post_save.connect(update_thread, sender=NewMessage)

您还可以对NewMessage使用自定义的save方法。在

相关问题 更多 >