基于通用类的视图 CreateView - 如何将 request.user 与某个 modelobject.user 进行比较

问题描述

在基于通用 CreateView 类的视图中,我想将 request.user 与某个 modelinstance.user 进行比较,如果用户不匹配,我想引发 404 错误,我该如何实现?我应该修改 generic.CreateView 中的哪个方法以及如何修改

谢谢!

解决方法

@Ruben Adriannse- 这有效吗?test_func 是一个“检查用户是否通过给定测试”的函数

class RegisterUserView(UserPassesTestMixin,CreateView):
    model = ChatUser
    template_name = 'login/registration_page.html'
    form_class = UserForm
    second_form_class = ProfileForm
    permission_denied_message = _("You are already registered!")

    def test_func(self):
        #write your logic here and return True or False based on your logic
        return self.request.user.is_anonymous
,

你必须在你的 views.py 文件中使用 mixins

from django.contrib.auth.mixins import LoginRequiredMixin