我在创建自定义用户模型的两个教程之间来回走动:
和https://wsvincent.com/django-tips-custom-user-model/
到目前为止,这里是我的代码:
型号:
class CustomUser(AbstractUser):
is_admin = models.BooleanField('admin status', default=False)
is_areamanager = models.BooleanField('areamanager status', default=False)
is_sitemanager = models.BooleanField('sitemanager status', default=False)
表格:
class CustomUserCreationForm(UserCreationForm):
class Meta(UserCreationForm.Meta):
model = CustomUser
class CustomUserChangeForm(UserChangeForm):
class Meta(UserChangeForm.Meta):
model = CustomUser
管理员:
class CustomUserAdmin(UserAdmin):
add_form = CustomUserCreationForm
form = CustomUserChangeForm
model = CustomUser
list_display = ['email', 'username',]
admin.site.register(CustomUser, CustomUserAdmin)
此时,我已经碰壁了。我不确定将内容限制为用户的方向。我的一般想法是,我希望管理员访问所有内容,让区域管理员具有下一个访问级别,然后是站点管理员,然后让普通用户(在所有布尔检查中为false)具有基本特权。
这是进行这种实现的最佳途径吗?我应该从这里去哪里,为什么?
不要扩展AbstractUser,用户Django内置组和权限来创建具有不同特权的用户类:https://docs.djangoproject.com/en/3.0/topics/auth/default/#groups
如果您需要向用户添加更多信息,通常的模式是创建UserProfile:
class UserProfile(models.Model):
user = models.OneToOneField(User, related_name='profile')
address = models.CharField(max_length=140)
age = ...
一些建议: