问题描述
我正在创建我的第一个 Django(3.1 版)网站,它只是一个带有主页和商店页面的博客。我想创建自定义用户组,为我的博客定义特定角色(具有独特权限)。
这些组是:
- 读者 - 匿名查看者和新帐户;仅对所有内容具有读取权限
- 作者 - 需要登录;具有读取和创建权限;仅对自己的内容进行编辑和删除权限
- 版主 - 需要登录;拥有所有内容的所有 CRUD 权限
- 管理员 - 需要登录,拥有所有权限(超级用户)
默认情况下,所有新用户都在 读者 组中。 作者 将手动分配或最终通过在线表格申请来确定资格。 版主和管理员当然会被手动分配。
我正在通过可能的未来发展来解决这个问题,例如允许用户组轻松扩展到其他网站页面。例如,作者 用户可享受 5% 的折扣,适用于所有商店商品等。
哪种创建用户组的方法最适合我的情况?我已经在 Django 管理面板中看到它通过扩展 AbstractBaseUser 和 UserBaseManager 类来创建自定义用户模型。
解决方法
我认为扩展 AbstractUser 模型是一种很好的方法。这样的事情怎么样?
class CustomUser(AbstractUser):
"Define the extra fields related to User here"""
first_name = models.CharField(_('First Name of User'),blank=True,max_length=20)
last_name = models.CharField(_('Last Name of User'),max_length=20)
# - - - Some more User fields according to your need s
class Meta:
permissions = (("can_read_content","To provide read facility on all content"),#---------------------
)