Python Django对我的模型的权限

Python Django对我的模型的权限,python,django,django-permissions,Python,Django,Django Permissions,我有一个叫做日志的模型: class Logs(models.Model): entry = models.CharField(max_length=100) 一些用户可以管理日志,其他用户可以编辑日志,其余用户只能查看日志您将如何处理Django中的此类权限? 我正在考虑添加一个新的many-to-many字段,一个用于管理员,另一个用于编辑器,然后在save函数中检查哪个用户在哪个组中 然而,这似乎是静态的和糟糕的,我能以某种方式使用Django的内置权限吗?还有什么其他的解决方案

我有一个叫做日志的模型:

class Logs(models.Model):
    entry = models.CharField(max_length=100)
一些用户可以管理日志,其他用户可以编辑日志,其余用户只能查看日志您将如何处理Django中的此类权限?

我正在考虑添加一个新的
many-to-many
字段,一个用于管理员,另一个用于编辑器,然后在save函数中检查哪个用户在哪个组中

然而,这似乎是静态的和糟糕的,我能以某种方式使用Django的内置权限吗?还有什么其他的解决方案、软件包,解决这个问题的最佳方法是什么

我看到您可以在Django中创建自定义权限,即

permission = Permission.objects.create(codename='can_publish',
                                       name='Can Publish Logs',
                                       content_type=content_type)

但是如何在
日志中检查权限,这是通过
Save()
方法完成的。

您请求的权限功能是在中为您实现的

您尤其希望控制谁可以编辑模型,该模型包含在django的文档中。如果需要,也可以实现

您可以在视图上检查这些权限,django.contrib.auth提供所需的
权限。这正是你所需要的

您也不需要为编辑器、管理员和用户重新实现多对多字段。您可以使用django.contrib.auth
Group
将用户添加到相应的组中,然后为这些组分配权限:

from django.contrib.auth.models import Group, Permission
from django.contrib.contenttypes.models import ContentType
from api.models import Logs
new_group, created = Group.objects.get_or_create(name='new_group')
ct = ContentType.objects.get_for_model(Logs)

permission = Permission.objects.create(codename='can_clean_logs',
                                   name='Can clean logs',
                                   content_type=ct)
new_group.permissions.add(permission)
检查是否有更细粒度的控制和对象级权限

为django模型权限提供挂钩并提供集成

以下答案也会有所帮助:


是的,只需设置用户组并使用Django权限系统如何检查权限更深入一点,docs page@Anentropic您可以将此方面的装饰程序应用到Django Rest框架,即视图上吗?+1适用于Django guardian。虽然一个类可能不需要另一个依赖项,但您可以自己实现权限。