问题 django-registration app和Django 1.5自定义用户模型


我使用django-registration app和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)


3079
2018-03-08 14:29


起源

你看到了吗? stackoverflow.com/questions/1072270/... - rafek
@rafek我尝试使用新的自定义用户模型(Django 1.5中的新功能) - user2054574


答案:


django-registration的主叉现在与django 1.5不兼容。

检查 这个拉动请求

你有三个选择:

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

9
2018-03-08 15:51



我刚下载了当前的“trunk”版本 django-registration 来自bitbucket的应用程序,它适用于Django 1.5(当我使用它时它不起作用 pip 安装应用程序)。我下载的版本号是 VERSION = (0, 9, 0, 'beta', 1)。 - yellowcap
也许 django-registration2 ?我刚刚安装了它 django-registration 因为 yolk -V django-registration 只给出 django-registration 0.8 这与Django == 1.5.1不兼容 - boldnik


这个 链接  很好地解释了这个过程,并使用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)

4
2017-07-02 05:42



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


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


0
2017-07-23 22:13