python – 自定义用户模型字段(AbstractUser)未在django admin中显示
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 自定义用户模型字段(AbstractUser)未在django admin中显示,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1575字,纯文字阅读大概需要3分钟。
内容图文
我使用AbstractUser方法扩展了django的User模型.问题是,我的自定义字段不会显示在django管理面板中.
我的models.py:
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
is_bot_flag = models.BooleanField(default=False)
我的admin.py:
from django.contrib.auth.admin import UserAdmin
from .models import User
admin.site.register(User, UserAdmin)
谢谢
解决方法:
如果要查看自定义字段,还必须覆盖UserAdmin.文档中有一个example here.
您必须创建用于创建(和更改)用户数据的表单并覆盖UserAdmin.创建用户的表单是:
class UserCreationForm(forms.ModelForm):
password1 = forms.CharField(label='Password', widget=forms.PasswordInput)
password2 = forms.CharField(label='Password confirmation', widget=forms.PasswordInput)
class Meta:
model = User
fields = '__all__'
def clean_password2(self):
password1 = self.cleaned_data.get("password1")
password2 = self.cleaned_data.get("password2")
if password1 and password2 and password1 != password2:
raise forms.ValidationError("Passwords don't match")
return password2
def save(self, commit=True):
user = super().save(commit=False)
user.set_password(self.cleaned_data["password1"])
if commit:
user.save()
return user
您使用以下方式覆盖UserAdmin:
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
class UserAdmin(BaseUserAdmin):
add_form = UserCreationForm
add_fieldsets = (
(None, {
'classes': ('wide',),
'fields': ('email', 'first_name', 'last_name', 'is_bot_flag', 'password1', 'password2')}
),
)
然后你注册:
admin.site.register(User, UserAdmin)
我几乎从文档中复制/粘贴了这个并删除了一些代码以缩短它.转到文档以查看完整示例,包括用于更改用户数据的示例代码.
内容总结
以上是互联网集市为您收集整理的python – 自定义用户模型字段(AbstractUser)未在django admin中显示全部内容,希望文章能够帮你解决python – 自定义用户模型字段(AbstractUser)未在django admin中显示所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。