[英]'teamview' object has no attribute 'get_object'
I have a problem with UserPassesTestMixin, I want to restrict views from viewing people assigned for the manager.我对 UserPassesTestMixin 有问题,我想限制查看分配给经理的人员的视图。 It's giving me an error of 'teamview' object has no attribute 'get_object'.
它给了我“teamview”对象没有属性“get_object”的错误。
Here is my views.py in question:这是我的 views.py 有问题:
from django.shortcuts import render
from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
from django.views.generic import ListView, CreateView, DetailView
from .models import Job, Member
from profiles.models import User
from django.contrib.auth.decorators import login_required
# Create your views here.
class jobs(LoginRequiredMixin,ListView):
model = Job
template_name = 'users/user_jobs.html'
context_object_name = 'jobs'
def get_queryset(self):
return Job.objects.filter(member__member=self.request.user)
class createdjobs(LoginRequiredMixin,ListView):
model = Job
template_name = 'users/manager_jobs.html'
context_object_name = 'jobs'
def get_queryset(self):
return Job.objects.filter(manager__manager=self.request.user)
class teamview(LoginRequiredMixin,UserPassesTestMixin,ListView):
model = Member
template_name = 'users/manage_team.html'
context_object_name = 'members'
def test_func(self):
return self.get_object().manager == self.request.user
def get_queryset(self):
return Member.objects.filter(manager__manager=self.request.user)
class jobdetail(LoginRequiredMixin,DetailView):
model = Job
class createjob (LoginRequiredMixin,UserPassesTestMixin,CreateView):
model = Job
fields = ['member','title', 'description', 'file']
def form_valid(self,form):
form.instance.manager=manager.objects.get(manager=self.request.user)
return super().form_valid(form)
def test_func(self):
return self.get_object().manager == self.request.user
Hope you cna help me out with this TIA.希望你能帮我解决这个 TIA。
In your class teamview(..., ..., ListView)
you are inheriting ListView
.在您的
class teamview(..., ..., ListView)
您正在继承ListView
。 A ListView
does not have get_object()
, since there is more than one object. ListView
没有get_object()
,因为有多个对象。 Here is a site which is great for checking all the available methods in class views: https://ccbv.co.uk/projects/Django/3.0/django.views.generic.list/ListView/这是一个非常适合检查类视图中所有可用方法的站点: https : //ccbv.co.uk/projects/Django/3.0/django.views.generic.list/ListView/
Side Note: I would recommend looking into PEP8 style guide and installing a linter in your editor to follow best practices.旁注:我建议查看PEP8 样式指南并在您的编辑器中安装linter以遵循最佳实践。 This will help other developers read your code.
这将帮助其他开发人员阅读您的代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.