python - 自动将用户令牌分配给自定义配置文件模型 django rest 框架
问题描述
我目前有一个信号,可以在用户注册网站时自动为他们创建一个 Token 对象。
我还有一个自定义用户模型,UserProfileInfo
其中我有一个将令牌连接到用户的字段
token = models.OneToOneField(Token,related_name='token',on_delete=models.CASCADE,blank=True,null=True)
但是,我希望在创建 userprofileinfo 时自动分配它,这发生在信号中。
@receiver(post_save, sender=User)
def create_auth_token(sender, instance, created, **kwargs):
if created:
token = Token.objects.create(user=instance)
UserProfileInfo
@receiver(post_save, sender=User)
def create_or_update_user_profile(sender, instance, created, **kwargs):
if created:
UserProfileInfo.objects.create(user=instance)
else:
instance.userprofileinfo.save()
(第一个信号创建一个令牌,第二个创建 userprofileinfo)
我想知道如何在创建 userprofileinfo 时自动为用户分配令牌。
解决方案
您可以在一种信号方法中拥有这两项任务的代码。
您可以做的是,首先创建您的 UserProfileInfo 对象,然后为用户创建一个令牌。
@receiver(post_save, sender=User)
def create_or_update_user_profile(sender, instance, created, **kwargs):
if created:
UserProfileInfo.objects.create(user=instance)
token = Token.objects.create(user=instance)
else:
instance.userprofileinfo.save()
推荐阅读
- html - 如何在我的网站的移动版本中对齐某些元素?
- mysql - 当第二个表在 WHERE 语句中时,SQL 左连接不返回所有结果
- google-drive-api - 在 Google Drive API 中搜索文件夹的所有快捷方式
- r - 不要删除 kable 函数中的空格 - 以示例
- rust - 使用嵌套 Cargo.toml 项目的 Rust 子包
- python - Python:动态地将值附加到数据框中
- python - Python 遍历具有特定名称的子目录
- sql-server - 如何将 Debezium SQL Server 连接器与 ksqlDB 嵌入式连接一起使用?
- git - 将“Fix #x”提交到默认分支不会关闭 Github 上的问题
- javascript - 从 fetch/async 中调用的函数返回不同的 HTML 元素