【问题标题】:Create additional model on activation django-registration在激活 django-registration 上创建附加模型
【发布时间】:2016-11-29 08:20:08
【问题描述】:

我一直在努力实现不同的答案来处理(例如Django-Registration & Django-Profile, using your own custom form),但由于它似乎太过时了,所以我没有设法让它在我的项目中工作。

基本上我已经在我的项目中安装了 Django-Registration,并且可以通过它对用户进行身份验证和创建。

但是,我使用以下 UserProfile 模型扩展了用户:

class UserProfile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    account_type = models.IntegerField(null = True, default= 1)
    daily_message = models.BooleanField(default = True)
    tel_number = models.CharField(max_length=20, null = True)

    def __str__(self):
        return str(self.user)

我也想要:

  1. 为每个用户创建具有默认/空值的用户配置文件 (用户可以稍后更新)
  2. 用户可以输入电话 号码以及其他注册详情。

以下内容连接在我的 URLs.py 中:

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^accounts/', include('registration.backends.hmac.urls')),
    url(r'^', include('app.urls'))
]

由于我无法查看任何 Django 注册表单,并且许多文档都描述了自定义用户模型(我没有),因此有什么想法可以做上述其中一种吗?

【问题讨论】:

    标签: django django-models django-forms django-admin django-registration


    【解决方案1】:

    有很多不同的方法可以完成这项任务,最类似于 django 的方法是依赖信号。更具体地说是user_registered 信号。

    registration.signals.user_registered 当一个新的用户帐户被发送时发送 挂号的。提供以下参数:

    sender 用于注册帐户的 RegistrationView 子类。
    user代表新帐户的用户模型实例。
    request强> 新帐户注册的HttpRequest。

    def create_user_profile(sender, user, requet):
        '''
        Creates a profile object for registered users via the
        user_registered signal
        '''
    
        obj = UserProfile.objects.get_or_create(user=user)
    

    另一种方法是继承RegistrationView。第二种选择是在 User 上捕获 post_save 信号。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-12
      • 1970-01-01
      • 2011-05-16
      • 2016-08-01
      • 1970-01-01
      • 2011-06-22
      相关资源
      最近更新 更多