python - “teamview”对象没有属性“get_object”
问题描述
我对 UserPassesTestMixin 有疑问,我想限制视图查看分配给经理的人员。它给了我一个“teamview”对象没有属性“get_object”的错误。
这是我有问题的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
希望你能帮我解决这个 TIA。
解决方案
在你的class teamview(..., ..., ListView)
你正在继承ListView
。AListView
没有get_object()
,因为有多个对象。这是一个非常适合检查类视图中所有可用方法的站点:https ://ccbv.co.uk/projects/Django/3.0/django.views.generic.list/ListView/
旁注:我建议查看PEP8 样式指南并在您的编辑器中安装 linter 以遵循最佳实践。这将帮助其他开发人员阅读您的代码。
推荐阅读
- java - 找不到休眠配置的类?
- angular - 可观察的
> vs 可观察的 在剑道 UI 中的角度 - customization - 如何自定义 Wheelnav.js 的吊具(带有 svg)
- python - 如何延迟调用 lambda?
- node.js - 在 Node.js 和 module.export 的类中调用本地方法
- r - 如何仅在特定类型的列上使用 select() 而不会丢失其他类型的列?
- php - $GLOBALS 没有得到预期的数据
- java - JDBC:如何读取 MySQL 点格式
- android - Android:对话框首选项中的自定义字体
- content-management-system - CrafterCMS:如何在应用程序上下文 bean 中使用 Crafter 引擎属性?