django - 在 post_save 信号上获取完整的用户对象
问题描述
我是信号新手。我想做的事情可以务实地在视图上完成,也许信号不是要走的路,但无论如何,我对信号有问题。我有一个用户模型(自定义)和 UserIdentities 模型。创建新用户时,将生成 3 个身份并保存在 UserIdentities 模型中:
User(models.Model):
fields...
UserIdentities(models.Model):
user = models.ForeignKey(User)
@receiver(post_save, sender = User)
def user_created(sender, instance, created, raw, **kwargs):
if created:
# generate three dept identities and save in UserIdentities model
identities = generate_identiteies(instance)
我现在遇到的问题是该实例是用户名(单个字符串),而不是具有用户所有属性的 User 对象的实例。在文档中,它说实例是创建的对象,但在这里我只获得创建的用户的用户名,但需要几个其他字段来生成身份
解决方案
我现在遇到的问题是该实例是用户名......我只得到创建的用户的用户名......
这不应该是这样。instance
in case ofpost_save
是save
d的实际实例。
assertIsInstance(instance, User.class)
您可以通过在信号方法中添加beforeif created
语句来验证这一点。如果你没有得到AssertionError
,你可以放心地假设它instance
不是一个字符串。
推荐阅读
- python - 如何清理 x 轴以显示时间戳,使用 matplotlib 显示 csv 文件中的数据?
- bash - 在 (Git)bash 中,使用键中的特殊字符设置环境变量
- jmeter - 如何使用 beanshell 断言将 JSON 值提取到字符串变量中以验证必填字段
- c# - 是否可以更改 nuget 包的生成位置?.Net 核心 5 Visual Studio 19
- python - python除法操作不一致
- python - pygame物理模拟对称性破坏
- javascript - 图像未出现在 html 电子邮件模板中
- c# - 将鼠标光标从左向右移动时如何翻转 2D 精灵
- react-native - RN OneSignal _open 事件
- c# - 如何将空值转换为默认值(浮点数)0.0 值并将该默认值保存到 MYSql 版本(6.0.11-alpha-community)