Django REST:自动更新连接的模型(POST请求后)

时间:2018-02-10 16:25:24

标签: python django django-rest-framework

我想为用户创建一种能够交换1对1消息的功能。为此,我想更新我的Django模型中的字段,具体取决于Message模型所采取的操作。例如,我想在每次发布新邮件时更新last_message模型中的Conversation

我有两个主要模型:ConversationMessage,其中每个会话都可以有很多消息。

Models.py

class Conversation(models.Model):
    last_message = models.CharField(max_length=50, blank=True)

class Message(models.Model):
    body = models.TextField(max_length=500, blank=False)
    conversation = models.ForeignKey(Conversation, on_delete=models.CASCADE)

我认为我需要使用覆盖save()类中的Message方法。或者可能是save()序列化器的方法。

def save(self, *args, **kwargs):
    super(Message, self).save(*args, **kwargs)
    # something that I need
    self.conversation.last_message = self.body

最后,我想向我的API端点发送POST请求,例如 /api/conversation/<id>/messages/它将使用每条新的最新消息更新Conversation对象。

1 个答案:

答案 0 :(得分:1)

您似乎错过了通话#{1}}方法。由于您只需要为新邮件更新会话,我认为最好覆盖序列化程序的save方法:

create