Modelviewset post 请求成功时如何调用函数

How to call function when post request succeed in Modelviewset

# views.py
import schedule_update.send_the_result

class UpdatedTypeViewSet(viewsets.ModelViewSet):
    queryset = Updated_Type.objects.all()
    serializer_class = UpdatedTypeSerializer
    # Is it correct to code here, if I would like to call function when post request succeed, and how?
# send_to_redmine.py
def Send_The_Result():
    # get the data from request and send it to redmine.

if __name__ == '__main__':
    Send_The_Result()

这是我的源代码,我在 Modelviewset 中遇到了 2 个问题。

  1. 当post 请求在Modelviewset 中成功时,是否可以调用Send_The_Result?
  2. 当post请求发送后,如何将数据带入Send_The_Result?

如果需要任何进一步的信息,请告诉我,谢谢。

Django Rest Framework 是对 Django 的抽象,通过与基本 HTTP 协议略有不同的操作来实现 Web 方法。例如:POST是通过create方法实现的。

等效的 ModelViewSet 方法:

def create(self, *args, **kwargs):
  return super().create(*args, **kwargs)

ModelViewSet 中的 create 方法调用序列化程序,评估请求,如果有效,则通过模型和 returns 响应存储在数据库中。

因此,这为您提供了三个级别的 space,您要在其中执行 some_function_on_successful_task_completion

  • 您可以在视图的 create 方法中覆盖,
  • 您可以在 Serializer 的 create 方法中覆盖。
  • 您可以在模型的 save 方法中覆盖。

例如,在您的模型中:

def save(self, *args, **kwargs):
  # normal stuff, save to db.
  # easier here, as you have every information you need to perform operations
  return obj