- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个扩展/继承 AbstractUser 的客户用户模型。我还希望管理员中的用户创建表单匹配,但出于某种原因我只能让它显示用户名和密码字段。没有其他的。
我发现特别有趣的是,我对 admin.py 中的这 3 个字段所做的更改反射(reflect)在创建表单中,但其他字段从未显示。因此,例如,我可以更改密码 1 的帮助文本或标签,并在表单中呈现它,但其他字段不会。
此外,如果我设置扩展 UserAdmin 并注册它(如下面的代码所示),我将获得通用用户的 3 字段创建 View ,但如果我扩展 ModelAdmin,我将获得所有字段,但无法使用密码更新表单。它 404s。
还值得注意的是,指向对象列表的链接是“User”,而不是我的模型所调用的“CommonUser”,但这可能是某处的类元。
admin.py
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.forms import UserChangeForm, UserCreationForm
from models import CommonUser, Account, Registry
from django import forms
class MyUserChangeForm(UserChangeForm):
class Meta(UserChangeForm.Meta):
model = CommonUser
class MyUserCreationForm(UserCreationForm):
password = forms.CharField(
label='Password',
max_length = 32,
required=True,
widget=forms.PasswordInput,
)
password2 = forms.CharField(
label='Confirm',
max_length = 32,
required=True,
widget=forms.PasswordInput,
help_text="Make sure they match!",
)
class Meta(UserCreationForm.Meta):
model = CommonUser
fields = ['username', 'password', 'password2', 'email',
'first_name','last_name','address','city','state','zipcode',
'phone1','phone2',]
help_texts = {
'password': 'Must be at least 8 characters.',
}
def clean_username(self):
username = self.cleaned_data['username']
try:
CommonUser.objects.get(username=username)
except CommonUser.DoesNotExist:
return username
raise forms.ValidationError(self.error_messages['duplicate_username'])
class MyUserAdmin(UserAdmin):
form = MyUserChangeForm
add_form = MyUserCreationForm
fieldsets = UserAdmin.fieldsets + (
('Personal info', {'fields': ('address', 'phone1',)}),
)
admin.site.register(CommonUser, MyUserAdmin)
(片段)model.py
from django.contrib.auth.models import AbstractUser
class CommonUser(AbstractUser):
"User abstraction for carrying general info."
WORK_STATES = (
('FL', 'FL'),
)
address = models.CharField(max_length=50)
city = models.CharField(max_length=30)
state = models.CharField(max_length=2, default='FL', choices=WORK_STATES)
zipcode = models.CharField(max_length=10)
phone1 = models.CharField(max_length=15)
phone2 = models.CharField(max_length=15, null=True)
gets_email_updates = models.BooleanField(default=False)
来源
Extending new user form, in the admin Django Using Django auth UserAdmin for a custom user model https://docs.djangoproject.com/en/1.6/topics/auth/customizing/#a-full-example
最佳答案
django.contrib.auth.admin 中的 UserAdmin 还设置了“add_fieldsets”属性,该属性设置要在添加用户 View 中显示的字段。由于 UserAdmin 设置了该字段,您需要覆盖它以设置您自己的字段。
这是一个例子:
class CustomUserAdmin(UserAdmin):
# ...code here...
fieldsets = (
(None, {'fields': ('email',)}),
(_('Personal info'), {'fields': ('first_name', 'last_name')}),
(_('Permissions'), {'fields': ('is_active', 'is_staff', 'is_superuser',
'groups', 'user_permissions')}),
(_('Important dates'), {'fields': ('last_login', 'date_joined')}),
)
add_fieldsets = (
(None, {
'classes': ('wide',),
'fields': ('email', 'first_name', 'last_name', 'password1',
'password2')}
),
)
希望这对您有所帮助!
关于python - 用于创建 AbstractUser 扩展模型的 Django 管理表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23697130/
我是 django 的初学者,我正在研究用户身份验证。我正在使用 Abstractuser 和默认的 User 模型来创建用户。但是,收集了很多对我的项目没有用的不必要信息。 这是我的models.p
我有一个继承 AbstractUser 的模型,如下所示: class Driver(AbstractUser): dni = models.CharField(max_length=8,vali
我想添加一个 Django 用户字段。所以我检查了这个文档:https://docs.djangoproject.com/en/1.8/topics/auth/customizing/ 我决定使用 A
我正在 Django 1.5 中开发一个学校数据库系统,并计划拥有许多不同的用户类型(学生、教职员工、家长),它们是 AbstractUser 的子类(实际上是 AbstractUser 的另一个抽象
我试图继承 AbstractUser 并在运行 migrate 时遇到错误,makemigrations 说 No changes detected django.db.utils.Programmi
AUTH_USER_MODEL 错误已在 EDIT3 中解决。通过表单创建用户时,密码仍然不会保存。 我正在使用 Django 1.5 使用新的用户覆盖/扩展功能,我无法通过我的注册表单注册新用户 -
所以我一直在互联网上搜索一个完整的例子,当你有至少 2 个不同的模型时如何使用 AbstractUser。没有找到任何决定性的东西......至少可以在最新版本的 Django (2.0.1) 上工作
我正在使用 AbstractUser 模型来创建自定义身份验证模型。 问题是我无法覆盖用户名字段的默认表单字段验证器,这是我迄今为止尝试过的: class RegularUserForm(forms.
我使用 ugettext_lazy 来翻译默认的 AbstractBaseUser 字段,我发现了一个问题。我想将名为 password 的字段翻译为我的母语,但我收到的唯一结果是 django.co
我正在尝试集成两个 django 应用程序,每个应用程序都有各自的身份验证工作。为此,我尝试对 AbstractUser 而不是 User 进行子类化。我正在关注PyBB docs和 Django#s
我正在使用 Django 1.6 + MySQL。我的模型有一个扩展 AbstractUser 的 custom_user 类。 class CustomUser(AbstractUser):
我有一个扩展/继承 AbstractUser 的客户用户模型。我还希望管理员中的用户创建表单匹配,但出于某种原因我只能让它显示用户名和密码字段。没有其他的。 我发现特别有趣的是,我对 admin.py
应用名称后端 用户对象返回错误: users = User.objects.filter(fb_userid=fb_user_id) AttributeError: type object 'User
AbstractUser 和AbstractBaseUser 的使用看起来很相似。 from django.contrib.auth.models import AbstractUser, Abstr
我正在尝试在 models.py 中使用我的 Person 类作为用户。不过我尝试使用 AbstractUser 和 AbstractBaseUser。在我尝试登录的部分,它们都给了我错误,我尝试了多
原始问题 我想为 3 种类型的用户创建 3 个用户配置文件。起初,我做了一个 CharFiled 作为标记来区分它们,但后来我意识到我必须放置一些 ForeignKey 来关联这些用户。至于这一步,我
我在 Django 1.5.4(稳定版)上没有错误,但是当我从官方 tar.gz 在 Django 1.6 beta 4 上测试我的应用程序时,我在启动时遇到验证模型错误。 models.py fro
我已经使用 AbstractUser 方法为 django 扩展了用户模型。问题是,我的自定义字段没有显示在 Django 管理面板中。 我的模型.py: from django.contrib.au
将我的项目从 django 1.7.4 迁移到 1.8.5 时遇到了一个奇怪的问题 在我的项目中,我像这样扩展基本的用户模型: 应用用户: class User(AbstractUser):
我在我的reg_group应用的models.py中创建了一个AbstractUser类 from django.contrib.auth.models import AbstractUser fro
我是一名优秀的程序员,十分优秀!