我正在使用django social auth进行社交网络登录我的网站,并且用户信息存储在用户模型中工作正常。但我有另一个模型( ExtraInfo )继承用户模型来存储额外的数据。当django social auth在用户模型中创建新用户时,如何在子模型( ExtraInfo )中创建新实例
我试过了social_AUTH_USER_MODEL =' myapp.CustomUser'但这不起作用,因为create_user方法不适用于子模型
class ExtraInfo(User):
phoneNo = models.CharField(max_length = 30)
city = models.CharField(max_length = 30)
state = models.CharField(max_length = 30)
答案 0 :(得分:1)
取决于您的项目,但看起来您的ExtraInfo
模型不应继承User
模型,而是按@ miki725或django profiles提及的方式扩展。{ / p>
关于django-social-auth,您可以使用创建所需ExtraInfo
模型的函数扩展默认pipeline(您可以使用is_new
参数检查用户是否为新用户)。
如果用户是通过其他方式创建的,那么信号就是最佳选择。
答案 1 :(得分:0)
根据Django文档,为User
添加属性的推荐方法是使用OneToOneField
而不是子类化:
class ExtraInfo(models.Model):
user = models.OneToOneField(User, related_name='extra_info')
phoneNo = models.CharField(max_length = 30)
city = models.CharField(max_length = 30)
state = models.CharField(max_length = 30)
至于您的问题,您可以连接到Django的post_save
信号(docs),然后只要created
参数为True
,就会创建ExtraInfo
该新用户的模型。