我已经使用AbstractUser方法扩展了django的用户模型。问题是,我的自定义字段未显示在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
如果要查看自定义字段,还必须重写。文档中有一个示例。
您必须创建用于创建(并更改)用户数据和覆盖的表单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)
我几乎从文档中复制/粘贴了此内容,并删除了一些代码以使其更短。转到文档以查看完整的示例,包括用于更改用户数据的示例代码。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句