python - Django app_label权限问题

标签 python django django-models django-admin django-permissions

我已经更改了应用标签来执行此操作

class Model(models.Model):
     pass

     class Meta:
          app_label = 'App Name'
          db_table = 'app_table'

表和应用程序已经存在,问题是当我进入管理界面时,只有 super 用户可以查看该应用程序,而其他用户则不能,我尝试向其他用户添加权限,但它没有出现在权限框。

提前致谢!

最佳答案

这绝对是 Django 中的一个错误。权限app_label和contenttype app_label之间存在冲突,导致权限在管理中永远不匹配。作为修复此问题之前的解决方法,您可以简单地显式授予 ModelAdmin 权限:

class MyModelAdmin(admin.ModelAdmin):
    ...
    def has_add_permission(self, request):
        return request.user.has_perm('app_label.add_modelclass')

    def has_change_permission(self, request, obj=None):
        return request.user.has_perm('app_label.change_modelclass')

    def has_delete_permission(self, request, obj=None):
        return request.user.has_perm('app_label.delete_modelclass')

其中 app_label 是根模型的 app_labelmodelclass 是代理模型的小写名称。

关于python - Django app_label权限问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4971435/

相关文章:

python - 从 values() 或 values_list() 中排除字段

python - django.db.utils.OperationalError : FATAL: password authentication failed for user "postgres"

javascript - 如何检查 django 模板中哪些复选框已选中或未选中?

python - 计算平均交货时间(天) Django ORM

mysql - 在模板中显示多个相关的 Django 模型

javascript - 如何将 jQuery 范围 slider 值获取到表单中以存储在 Django 的数据库中

python - _<parent_class><__method_name> 模式覆盖父类 <__method_name>,为什么?

python - 如何从Python中的协方差矩阵获取子协方差

python - 如何从geoalchemy2的查询结果中获取lng lat值

Python:别名 If-Else 条件语句?