我有一个简单的聊天应用。
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更新Thread模型中的last_message_time。我怎么能这样做呢?
答案 0 :(得分:3)
最简单的方法可能是post_save
的{{1}}信号处理程序。
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)
上使用自定义save
方法。