如何基于post-save实现
时间: 2023-12-26 11:04:07 浏览: 118
如果你需要在模型保存后获取当前用户信息,可以在 Signals 的 post-save 信号处理函数中获取当前用户信息。具体步骤如下:
1. 在模型中添加一个 `created_by` 字段,用于存储创建该模型实例的用户:
```
from django.db import models
from django.contrib.auth.models import User
class MyModel(models.Model):
# ...
created_by = models.ForeignKey(User, on_delete=models.CASCADE)
```
2. 在 Signals 的 post-save 信号处理函数中获取当前用户信息,并保存到模型实例的 `created_by` 字段中:
```
from django.db.models.signals import post_save
from django.dispatch import receiver
from django.contrib.auth.models import User
from myapp.models import MyModel
@receiver(post_save, sender=MyModel)
def my_signal_handler(sender, instance, created, **kwargs):
if created:
current_user = User.objects.get(id=1) # TODO: 获取当前用户信息
instance.created_by = current_user
instance.save()
```
需要注意的是,这里的 `User.objects.get(id=1)` 是一个示例,你需要将其替换为获取当前用户信息的逻辑。可以使用前面介绍的方法,在视图函数中获取当前用户信息后,将其传递给信号处理函数,或者使用线程本地存储或中间件存储当前用户信息。
阅读全文