在Django中自定义用户模型和表单

时间:2019-08-16 20:29:35

标签: python django django-models django-forms

我试图使用AbstractUser设置具有两个添加字段的自定义用户,但是当我在站点admin中检查添加用户表单时,表单字段以不同顺序显示(首先输入密码,组和用户权限) ,然后是用户名,等等)

在我的设置中,我已经将AUTH_USER_MODEL注册到我的自定义User类。我有一个带有大量测试字段的用户类,当我运行它时,这些字段按照上面指定的顺序显示。然后,我创建了一个CustomUserCreationForm和一个CustomUserAdmin来尝试对字段进行排序,但是最终只显示了用户名和密码。

models.py

from django.db import models
from django.contrib.auth.models import AbstractUser

# Create your models here.
class User(AbstractUser):
    bio = models.TextField(max_length=500, blank=True)
    location = models.CharField(max_length=30, blank=True)
    birth_date = models.DateField(null=True, blank=True)

forms.py

from django.contrib.auth.forms import UserCreationForm
from .models import User


class CustomUserCreationForm(UserCreationForm):
    class Meta(UserCreationForm.Meta):
        model = User
        fields = ('username', 'email', 'password', 'bio', 'location', 'birth_date')

admin.py

from django.contrib import admin
from .models import User
from django.contrib.auth.admin import UserAdmin
from .forms import CustomUserCreationForm


class CustomUserAdmin(UserAdmin):
    add_form = CustomUserCreationForm


admin.site.register(User) #This one shows all the fields scrambled
#admin.site.register(User, CustomUserAdmin) #This one only shows 3 fields on the creation (user, pass and pass_confirm)

我希望看到的内容与“添加用户表单”的方式类似,只是添加了我正确添加和排序的额外字段。

预先感谢输入

0 个答案:

没有答案