覆盖视图内部和序列化程序内部的更新方法有什么区别?



我是 django 的新手,我知道这是一个幼稚的问题,但我对何时必须覆盖位于视图中的更新方法以及何时必须覆盖位于序列化程序中的更新方法感到困惑?

从文档中:

1( 创建、更新视图:

  • perform_create(self, serializer)
  • perform_update(self, serializer)
  • perform_destroy(self, serializer)

    • 这些挂钩对于设置请求中隐含但不是请求数据一部分的属性特别有用。例如,您可以根据请求用户或 URL 关键字参数在对象上设置属性。

    • 这些覆盖点对于添加在保存对象之前或之后发生的行为(例如通过电子邮件发送确认或记录更新(也特别有用。

    • 您还可以使用这些钩子通过引发 ValidationError(( 来提供额外的验证。如果需要在数据库保存时应用一些验证逻辑,这会很有用。

2( 在序列化程序中创建、更新:

  • 如果我们希望能够基于验证的数据返回完整的对象实例,我们需要实现一个或两个 .create(( 和 .update(( 方法。

  • 如果你的对象实例对应于Django 模型,你还需要确保这些方法将对象保存到数据库中。

  • 还可以覆盖嵌套操作的创建、更新方法。

最新更新