这是我的代码
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()
多谢帮忙
3条答案
按热度按时间cvxl0en21#
简单地做一个if语句,检查登录的用户是否有超级用户权限:
acruukt92#
也许你可以在细节视图中覆盖get_queryset,
3z6pesqy3#
这是一个可能的解决方案,我想出了,而我在我的项目工作。重写DetailView中的dispatch函数,以检查尝试访问视图的用户是否是所有者。如果用户不是所有者,则调用handle_permission_denied()方法,该方法将我们重定向到urlpatterns('forbidden')中定义的某个URL。确保导入reverse_lazy和HttpResponseRedirect。