我正处于观看的最后一步,我可以使用QVReportList.objects.all()
返回所有报告,它会在我的模板中正确显示报告ID。
但是,我想使用Q只显示我的reportdetail中不存在的报告,如下所示:
def profile(request):
owner = User.objects.get (formattedusername=request.user.formattedusername)
reportdetail = QVReportAccess.objects.filter(ntname = owner.formattedusername).values('report_id','report_name','report_access')
reportlist = QvReportList.objects.filter(~Q(report_id = reportdetail.report_id))
# excludedlist = QvReportList.objects.filter(report_id = reportlist.Report_ID)
print(reportlist)
args = {'user':owner, 'applicationaccess':reportdetail, 'applicationlist':reportlist}#, 'excluded':excludedlist}
return render(request, 'accounts/profile.html', args)
当我尝试运行它时,我得到一个表示report_id不存在的AttributeError,但是当我可以使用applicationaccess.report_id和applicationlist.report_id呈现它时,它会这样做:
AttributeError at /account/profile/
'QuerySet' object has no attribute 'report_id'
为什么说对象没有属性report_id?它显然存在于现有的数据库表和我的模型中。
答案 0 :(得分:0)
问题不在于Q
对象,但问题出在以下几行:
reportdetail = QVReportAccess.objects.filter(ntname = owner.formattedusername).values('report_id','report_name','report_access')
reportlist = QvReportList.objects.filter(~Q(report_id = reportdetail.report_id))
在第二行中,您尝试获取reportdetail.report_id
但是,reportdetail是Queryset对象(dict列表),并且它没有report_id
属性,即它为什么说
'QuerySet'对象没有属性'report_id'