Skip to main content
 首页 » 编程设计

python之有没有办法将元权限应用于 Django 应用程序中的每个模型

2025年05月04日35haluo1

我想为我的 Django 应用程序中的每个模型添加一个 can_view 元权限。

我非常想将它添加到 models.py

中的每个类中
class Meta: 
    permissions = [ ( "can_view", "Can view {something}".format( something = self.verbose_name ) ] 

我什至不确定 self.verbose_name 在这种情况下是否会像那样工作....

这可能吗?

奖励问题:一旦我在模型的 Meta 中添加权限,我就可以用 has_perm 调用它正确的?喜欢

if request.user.has_perm( 'polls.can_view' ) : 
    # Show a list of polls. 
else : 
    # Say "Insufficient permissions" or something.     

请您参考如下方法:

Permission 也是一个普通的 Django 模型实例。您可以像创建任何其他模型一样创建它。

所以你需要类似的东西

from django.contrib.auth.models import Permission 
from django.contrib.contenttypes.models import ContentType 
 
for content_type in ContentType.objects.all(): 
     Permission.objects.create(content_type=content_type, codename='view_%s' % content_type.model, name='Can view %s' % content_type.name) 

你需要做一次,所以post_syncdb signal 看起来是个好地方。