【发布时间】:2015-11-03 22:41:58
【问题描述】:
我在使用 django-registration-redux 时遇到问题。
我想向用户添加其他字段,如生日、电话等,但我很难在模型中扩展用户类。将这些字段添加到我的用户并在表单注册和登录中显示的最佳表单是什么?
【问题讨论】:
-
我会考虑更改标题,因为它看起来与问题的实际正文无关
-
谢谢,我觉得这个标题现在更适合身体了。
我在使用 django-registration-redux 时遇到问题。
我想向用户添加其他字段,如生日、电话等,但我很难在模型中扩展用户类。将这些字段添加到我的用户并在表单注册和登录中显示的最佳表单是什么?
【问题讨论】:
我建议按照以下步骤操作:
定义您的用户模型,添加您想要的字段,例如birth_date 和 photo:
# filename: myapp/models.py
from django.db import models
from django.utils.translation import ugettext as _
from datetime import datetime
from django.conf import settings
from django.contrib.auth.models import AbstractUser, Group
class MyUser(AbstractUser):
birth_date = models.DateField(null=True)
photo = models.ImageField(upload_to=..., null=True, blank=True, verbose_name=_("photo"))
创建自定义注册表单:
# in file myapp/forms.py
from django import forms
from registration.forms import RegistrationForm
class MyRegistrationForm(RegistrationForm):
birth_date = ...
photo = ...
编写自定义注册视图:
# in file myapp/views.py
from registration.backends.simple.views import RegistrationView
from .forms import MyRegistrationForm
class MyRegistrationView(RegistrationView):
form_class = MyRegistrationForm
def register(self, request, form):
user = super(MyRegistrationView, self).register(request, form)
user.birth_date = form.cleaned_data["birth_date"]
user.photo = form.cleaned_data["photo"]
user.save()
return user
告诉系统你将使用你的自定义用户模型
# in file settings.py
AUTH_USER_MODEL = "myapp.MyUser"
添加一个 URL 以调用您的自定义注册视图
# in file urls.py
from myapp.views import MyRegistrationView
...
urlpatterns = [
...
url(r'^accounts/register/$', MyRegistrationView.as_view(), name="registration_register"),
...
]
【讨论】:
settings.py 中设置AUTH_USER_MODEL,或者您在未加载的设置文件中进行了设置。见:stackoverflow.com/questions/26703323/django-abstract-user-error