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)

?

4

3 回答 3

9

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

检查此拉取请求

你有三个选择:

  • 修补 django-registration 的代码。您可以从拉取请求中获取所需的更改。
  • 使用已经打过补丁的非官方分叉。以这个为例。
  • 等待主分支的更新...
于 2013-03-08T15:51:34.320 回答
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)
于 2013-07-02T05:42:39.457 回答
0

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

于 2013-07-23T22:13:45.680 回答