django-registration 应用程序和 Django 1.5 自定义用户模型

11
我使用django-registration应用程序和Django 1.5。如何创建(django中的新功能)自定义用户模型并在注册过程中保存此数据(请注意,我正在使用django-registration):
class CustomProfile(models.Model):
    user = models.ForeignKey(User)
    name = models.CharField(max_length=255)
    bank = models.CharField(max_length=255)
    address = models.CharField(max_length=255)

?


1
你看到这个了吗?https://dev59.com/FXNA5IYBdhLWcg3wKaYx - rafek
@rafek 我尝试使用新的自定义用户模型(Django 1.5中的新功能)。 - user2054574
3个回答

9

目前,django-registration的主分支与django 1.5不兼容。

请查看这个拉取请求

你有三个选择:

  • 修补django-registration的代码。您可以从拉取请求中获取所需的更改。
  • 使用已经修补的非官方分支。例如这个
  • 等待主分支的更新...

1
我刚从bitbucket下载了当前的“trunk”版本的 django-registration 应用程序,它可以在Django 1.5中运行(当我使用 pip 安装该应用程序时无法正常工作)。我下载的版本号是 VERSION = (0, 9, 0, 'beta', 1) - yellowcap
1
也许可以使用 django-registration2?我刚刚安装了它,而不是 django-registration,因为 yolk -V django-registration 只显示了 django-registration 0.8,这个版本与 Django==1.5.1 不兼容。 - boldnik

4

这个链接很好地解释了该过程,并且与django-registration 1.0兼容。

除了上述代码外,以下是一些额外提示。

要更新名字,请在models.py中更改。

def user_registered_callback(sender, user, request, **kwargs):
profile = ExUserProfile(user = user)
profile.is_human = bool(request.POST["is_human"])
user.first_name = request.POST["firstname"]
user.save()
profile.save()

user_registered.connect(user_registered_callback)

并且在 forms.py 文件中

class ExRegistrationForm(RegistrationForm):
    is_human = forms.BooleanField(label = "Are you human?:")
    firstname = forms.CharField(max_length=30)
    lastname = forms.CharField(max_length=30)

最后,为了在表单上看到更改,请创建一个适当的模板。通过在应用程序中创建名为admin.py的文件并编写以下代码,可以在管理中查看配置文件:

from django.contrib import admin
from django.contrib.auth.models import User
from django.contrib.auth.admin import UserAdmin
from prof.models import ExUserProfile

admin.site.unregister(User)

class UserProfileInline(admin.StackedInline):
    model = ExUserProfile

class UserProfileAdmin(UserAdmin):
    inlines = [ UserProfileInline, ]

admin.site.register(User, UserProfileAdmin)

这样做不会同时创建User和ExUserProfile实例吗? - Andrei Sosnin
1
是的,这是目标,通过将ExUserProfile与用户对象关联并保存必要的字段来创建自定义用户模型。 - timberlake

0
最近发布了Django-registration 1.0。它完全重写以使用基于类的视图,并支持Django 1.0自定义用户模型。请查看文档

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接