You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Staff身份用户添加Driver删除权限?解决403权限错误

解决Django中Staff用户无法删除Driver对象的权限问题

当前问题是DriverDeleteView仅允许管理员删除Driver,Staff用户操作时触发403错误,核心原因是PermissionRequiredMixin默认仅检查指定权限,而Staff用户未被赋予对应权限或视图未对Staff身份做特殊放行。以下是两种可行解决方案:

方案一:给Staff用户/用户组分配对应权限

  • 登录Django Admin后台,进入**用户组(Groups)**页面,编辑Staff组,在权限列表中勾选taxi | driver | Can delete driver权限后保存。
  • 若为单个Staff用户,直接编辑该用户,在权限模块添加taxi.delete-driver权限。
  • 此方案严格遵循Django原生权限体系,适合需要精细化权限管控的场景。

方案二:自定义视图的权限校验逻辑

如果业务需求是所有Staff用户默认拥有删除Driver的权限,无需单独分配权限,可重写PermissionRequiredMixin的has_permission方法:

class DriverDeleteView(LoginRequiredMixin, PermissionRequiredMixin, generic.DeleteView):
    model = Driver
    success_url = reverse_lazy("taxi:driver-list")
    permission_required = "taxi.delete-driver"

    def has_permission(self):
        user = self.request.user
        # 允许超级管理员、Staff用户,或拥有指定删除权限的用户
        return user.is_superuser or user.is_staff or super().has_permission()
  • 该逻辑优先判断用户是否为管理员或Staff,满足任一条件即可执行删除;否则再校验是否拥有taxi.delete-driver权限。
  • 此方案更灵活,适合需要快速给Staff开放权限的场景。

注意事项

  • 确保LoginRequiredMixin已生效,避免未登录用户访问删除接口。
  • 使用方案一时,权限分配完成后建议让用户重新登录,确保权限生效。

内容的提问来源于stack exchange,提问作者Belskij Arioh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 03:45:54