Saya berada di langkah terakhir dari tampilan saya dan saya bisa mendapatkan semua laporan untuk kembali menggunakan QVReportList.objects.all() ini menunjukkan ID laporan dengan benar di template saya.

Namun saya ingin menggunakan Q untuk hanya menampilkan laporan yang tidak ada dalam detail laporan saya yang ditunjukkan di bawah ini:

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)

Ketika saya mencoba menjalankannya karena saya mendapatkan AttributeError yang menyatakan report_id tidak ada, tetapi itu terjadi ketika saya dapat merendernya dengan applicationaccess.report_id dan applicationlist.report_id:

AttributeError at /account/profile/
'QuerySet' object has no attribute 'report_id'

Mengapa menyatakan objek tidak memiliki atribut report_id? Itu jelas ada di tabel database yang ada dan model saya.

0
student101 9 November 2017, 20:44

1 menjawab

Jawaban Terbaik

Masalahnya bukan pada objek Q tetapi masalahnya ada di baris berikut:

reportdetail = QVReportAccess.objects.filter(ntname = owner.formattedusername).values('report_id','report_name','report_access')
reportlist = QvReportList.objects.filter(~Q(report_id = reportdetail.report_id))

Di baris kedua, Anda mencoba untuk mendapatkan reportdetail.report_id namun, reportdetail adalah objek Queryset (daftar dict) dan tidak memiliki atribut report_id yaitu mengapa dikatakan

Objek 'QuerySet' tidak memiliki atribut 'report_id'

0
Mohammad Mustaqeem 9 November 2017, 17:52