0

我正在使用 django social auth 进行社交网络登录到我的网站,并且它工作正常,用户信息存储在User模型中。但是我有另一个模型(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)
4

2 回答 2

1

取决于您的项目,但看起来您的ExtraInfo模型不应该从模型继承,User而是按照@miki725 或使用django 配置文件的方式扩展它。

关于 django-social-auth,您可以使用创建所需模型的函数扩展默认管道ExtraInfo(您可以使用参数检查用户是否是新用户is_new)。

如果用户是通过其他方式创建的,那么信号就是要走的路。

于 2012-11-16T06:38:12.327 回答
0

根据 Django 文档,为 a 添加属性的推荐方法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

于 2012-11-16T05:40:11.427 回答