首页 > 解决方案 > 如何通过一个视图更新两个模型?

问题描述

我有两个模型:用户和配置文件。是否可以使用一个 PUT 请求更新这两个模型?个人资料如下所示:

class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile',
                            blank=False, null=False)
based_location = models.CharField(max_length=50, blank=True)
is_available = models.BooleanField(default=False, blank=True)

用户是 AbstractUser。

我想更新这样的请求:

{"first_name": "John",
 "last_name": "Smith",
 "based_location": "London",
 "is_available": True,
}

标签: djangodjango-rest-framework

解决方案


是的当然。

但是您必须put在视图中重新加载方法并添加自定义逻辑以进行保存,或者您可以只更新方法perform_update

默认情况下,它看起来像:

def perform_update(self, serializer):
    serializer.save()

您可以自定义逻辑来保存两个序列化程序


推荐阅读