首页 > 解决方案 > django所有者权限详细视图

问题描述

这是我的代码

class EnrollmentDetail(generic.DetailView):
   model = Enrollment
   template_name = 'enrollments/enrollment_detail.html'
   context_object_name = 'enrollment

简单的 djeneric django 详细视图。我希望只有此视图的所有者才能访问它。其他我不想去的人都去拿它。我想限制他们的访问。我认为在这种情况下会引发错误,但不知道是哪一个。这很令人沮丧,因为它不是复杂的问题但无法解决。我检查了很多关于这个问题的帖子,但没有一个提供简洁干净的解决方案(装饰器、supers()、查询集等)

这是我的模型

class Enrollment(models.Model):
"""Defines Enrollment model"""

    doctor_name = models.ForeignKey(DoctorProfile, on_delete=models.CASCADE)
    patient_name = models.CharField(max_length=30)
    symptoms = models.CharField(max_length=80)
    diagnosis = models.CharField(max_length=30)
    received_at = models.DateTimeField(auto_now=True)
    room_number = models.PositiveIntegerField()

感谢帮助

标签: django

解决方案


简单地做一个 if 语句并检查登录用户是否具有超级用户权限:

class EnrollmentDetail(generic.DetailView):
    if request.user.is_superuser:
       model = Enrollment
       template_name = 'enrollments/enrollment_detail.html'
       context_object_name = 'enrollment
    else:
       # redirect to page

推荐阅读