django - 如何自动将用户模型组合到自定义用户模型
问题描述
我有这个自定义用户模型
class Customer(models.Model):
user = models.OneToOneField(User, null=True, blank=True, on_delete=models.CASCADE)
name = models.CharField(max_length=200, null=True)
email = models.EmailField(max_length=200)
def __str__(self):
return self.name
我使用 allauth 包进行身份验证,一旦我注册了一个新用户,我在网站的主页上收到了这个错误: RelatedObjectDoesNotExist at / User has no customer。
有没有办法在创建用户后自动将用户与客户结合起来?
解决方案
我想到了
首先导入 post_save 和接收器
from django.db.models.signals import post_save
from django.dispatch import receiver
然后
class Customer(models.Model):
user = models.OneToOneField(User, null=True, blank=True, on_delete=models.CASCADE)
name = models.CharField(max_length=200, null=True)
email = models.EmailField(max_length=200)
def __str__(self):
return "%s's profile" % self.user
@receiver(post_save, sender=User)
def create_user_customer(sender, instance, created, **kwargs):
if created:
cuatomer, created = Customer.objects.get_or_create(user=instance)
post_save.connect(create_user_customer, sender=User)
在 settings.py
AUTH_USER_MODULE = 'YOURAPP.Customer'
推荐阅读
- python - 将文件从服务帐户转移到常规帐户
- html - 无法展开导航栏
- decision-tree - 如何在 h2o 中使用决策树算法?
- laravel - 如何在 env 文件中安全保存密码 - Laravel
- firebase - Flutter如何使用Future返回值作为变量
- java - 无法使用弹性搜索构建 Spring Boot 应用程序
- jquery - 与 Datatable 功能交互后,表格正在清空
- typescript - 如何理解 TS 代码解析的结果?
- android - 使用 Android 加速度传感器进行距离测量
- angular - Angular 5 将组件动态插入到现有标记中?