覆盖模型保存以发送请求以及post_save

时间:2016-10-24 06:15:51

标签: django django-rest-framework django-signals

问题

Django模型在保存模型时发送信号post_save。但是,post_save无权访问请求对象。我需要访问request.user之类的变量并将其与信号一起发送。

可能的解决方案

  • 管理员 - 覆盖管理员save_model,以便从请求对象发送post_save一些额外参数。

  • DRF API - 创建或更新模型后,再次使用请求对象中的参数发送post_save

问题

在上述两种情况下,model.save()默认会发送post_save。如何覆盖save以发送自定义信号或使用post_save重新发送request.user。该怎么做?

1 个答案:

答案 0 :(得分:0)

您可以在用户模型上以这种方式访问​​用户对象:

from django.contrib.auth.models import User

# post save for creating customer on user saving
def post_save_function(sender, instance, created, **kwargs):

    # create customer instance 
    if created:



post_save.connect(post_save_function, sender=User)

您可以访问User变量

中的instance