我有一个没有模型的django设置,但是我想使用认证/权限系统来限制对某些视图的访问。为此,我创建了一个空模型:
from django.db import models
# Create your models here.
class Report(models.Model):
class Meta:
permissions = (
('view', "May view the reports")
)
并将该权限添加到我的视图中:
@login_required
@permission_required('report.view')
def index(request):
...
当以staff
用户身份登录时,它可以正常工作,当以普通用户身份登录时,我看到了登录屏幕。但是,在我的管理面板中,我看不到权限,所以我不能给予普通用户查看报告的权限。我尝试运行makemigrations
,但它说没有检测到任何更改。
我如何使用一个空模型来获得权限?
1条答案
按热度按时间u5rb5r591#
不需要迁移,您需要做的是创建正确的ContentType条目,这是Permission模型所需的字段。
一旦你这样做:
...在幕后执行
get_or_create
,然后在添加权限时,您将看到对应的条目report
作为内容类型。顺便说一句,如果你只是为了获得权限而使用它,你也可以将
abstract = True
添加到你的报表模型的Meta
中,这样它就不会为它创建一个数据库表。如果你这样做,你必须传递关键字参数for_concrete_model
。下面是一个示例代码: