AttributeError 'QuerySet' object has no attribute 'expenses'

2,185 views
Skip to first unread message

Kean

unread,
Sep 6, 2019, 2:50:07 PM9/6/19
to Django users
Hi, 

New to Django. when navigating to the reqired view, I get the error above.

urls.py

path('businesslogin/businessadmin/busproject', views.projectdetail, name='projectdetail'),

views.py

def projectdetail(request):
    project = Project.objects.all()
    return render(request, 'busprojectdetail.html', {'project': project, 'expense_list': project.expenses.all()})

models.py

# Project model

class Project(models.Model):
    name = models.CharField(max_length=100)
    budget = IntegerField()

    def save(self, *args, **kwargs):
        self.name
        super(Project, self).save(*args, **kwargs)

# Category manager model


class Category(models.Model):
    project = models.ForeignKey(
        Project, on_delete=models.CASCADE)
    name = models.CharField(max_length=150)


# Expenses manager model

class Expense(models.Model):
    project = models.ForeignKey(
        Project, on_delete=models.CASCADE, related_name='expenses')
    title = models.CharField(max_length=100)
    amount = models.DecimalField(max_digits=8, decimal_places=2)
    category = models.ForeignKey(Category, on_delete=models.CASCADE)

the error is as follows:


Exception Type:AttributeError
Exception Value:
'QuerySet' object has no attribute 'expenses'
Exception Location:/Users/ProductionEnv/Desktop/test/test1/dev/core/views.py in projectdetail, line 238

Please can anyone help?

Best 

K

Bhoopesh sisoudiya

unread,
Sep 6, 2019, 3:05:43 PM9/6/19
to django...@googlegroups.com
Hi kean,
    Please check Expenses Class is not Manager
    Please make Manager Class.


Thanks
Bhoopesh sisoudiya

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/024bc998-b683-41ae-90e2-d33f4527913a%40googlegroups.com.

Kean

unread,
Sep 6, 2019, 3:10:51 PM9/6/19
to django...@googlegroups.com
Hi, 

Thanks for the help.

The header for each model is # out, so is not read when the code parsed, it is just to help me identify the models.
I only have 3 models Project, Category and Expense.

Best wishes,

Kean

Bhoopesh sisoudiya

unread,
Sep 6, 2019, 3:21:17 PM9/6/19
to django...@googlegroups.com
Hi Kean,

 Write manager like this ,I give you reference

from django.db import models
 # First, define the Manager subclass. 
class BhoopeshBookManager(models.Manager):
   def get_queryset(self): 
        return super(BhoopeshBookManager, self).get_queryset().filter(author='Bhoopesh') 

# Then hook it into the Book model explicitly. class Book(models.Model): 
title = models.CharField(max_length=100) 
author = models.CharField(max_length=50)
 # ... 
objects = models.Manager()
 # The default manager. 

bhoopesh_objects = BhoopeshBookManager()
 # The Bhoopesh-specific manager.


Book.bhoopesh_objects.all() # use manager


Thanks 
Bhoopesh Kumar

Kean

unread,
Sep 6, 2019, 3:36:45 PM9/6/19
to django...@googlegroups.com
Hi Bhoopesh
Thanks for this, please can you put it into the context of my specific model setup, so I get it right and understand.
This will be easier for me as this approach is causing me some other errors, when i try to apply it.

Best wishes, 

Kean 

Bhoopesh sisoudiya

unread,
Sep 6, 2019, 3:46:54 PM9/6/19
to django...@googlegroups.com
Ok No problem but 
why you want Manager?

Please send me answer

Thanks
Bhoopesh sisoudiya

Bhoopesh sisoudiya

unread,
Sep 6, 2019, 3:50:34 PM9/6/19
to django...@googlegroups.com
Hi kean,

Category and Expense is not Manager model this is only model class.

Thanks
Bhoopesh Kumar


Kean

unread,
Sep 6, 2019, 3:52:13 PM9/6/19
to django...@googlegroups.com
Hi,

please ignore the manager it is just a naming convention ignore, it if for me to identify tables, if i have 50 table, I want to be able to know which model is holding which object information and for what I need it.

Please use below, I have removed the # information to reduce confusion.

models.py

class Project(models.Model):
    name = models.CharField(max_length=100)
    budget = IntegerField()

    def save(self, *args, **kwargs):
        self.name
        super(Project, self).save(*args, **kwargs)

class Category(models.Model):
    project = models.ForeignKey(
        Project, on_delete=models.CASCADE)
    name = models.CharField(max_length=150)

class Expense(models.Model):
    project = models.ForeignKey(
        Project, on_delete=models.CASCADE, related_name='expenses')
    title = models.CharField(max_length=100)
    amount = models.DecimalField(max_digits=8, decimal_places=2)
    category = models.ForeignKey(Category, on_delete=models.CASCADE)
On 6 Sep 2019, at 20:45, Bhoopesh sisoudiya <bhoop...@gmail.com> wrote:

Best wishes,
Kean

Bhoopesh sisoudiya

unread,
Sep 6, 2019, 4:02:53 PM9/6/19
to django...@googlegroups.com
def projectdetail(request):
    project = Project.objects.all()
    return render(request, 'busprojectdetail.html', {'project': project, 'expense_list': project.expenses.all()})

According to me by this archive you want expense details of each project

Then you write

projectDetails = Project.objects.select_related(your foreign key).values (select column).all()

Thanks
Bhoopesh sisoudiya


Kean

unread,
Sep 6, 2019, 4:07:50 PM9/6/19
to django...@googlegroups.com
Thanks,

I updated the view, and now I am getting syntax error.
Please see below.

views.py

def projectdetail(request):
    project = Project.objects.all()
    return render(request, 'busprojectdetail.html', {'project': project, 'expense_list': project.expenses.all()})

    projectDetails = Project.objects.select_related(Project).values(select column).all()

please advise how to correct?

Best,

Kean

Bhoopesh sisoudiya

unread,
Sep 6, 2019, 4:14:16 PM9/6/19
to django...@googlegroups.com
Write this

Expense.objects.select_related('project').all()



Kean

unread,
Sep 6, 2019, 4:16:18 PM9/6/19
to django...@googlegroups.com
This is still not working,
please can you provide full code, this way it is complete and accurate, and not me guessing?

Best,
Kean

Bhoopesh sisoudiya

unread,
Sep 6, 2019, 4:20:30 PM9/6/19
to django...@googlegroups.com



def projectdetail(request):
    projectExpnseDetails = Expense.objects.select_related('project').all()
    return render(request, 'busprojectdetail.html', {'project': project, 'expense_list':projectExpnseDetails })

Kean

unread,
Sep 6, 2019, 4:26:14 PM9/6/19
to bhoop...@gmail.com, django...@googlegroups.com
Hi Ok,

I updated as advised.

views.py

def projectdetail(request):
    projectExpenseDetails = Expense.objects.select_related('project').all()
    return render(request, 'busprojectdetail.html', {'project': project, 'expense_list': projectExpenseDetails})

I get new error
Exception Type:NameError
Exception Value:
name 'project' is not defined
Exception Location:/Users/ProductionEnv/Desktop/test/test1/dev/core/views.py in projectdetail, line 238


Please advise?

Best,

Kean
On 6 Sep 2019, at 21:19, Bhoopesh sisoudiya <bhoop...@gmail.com> wrote:

projectExpnseDetails

Kean

unread,
Sep 6, 2019, 4:38:17 PM9/6/19
to Bhoopesh sisoudiya, django...@googlegroups.com
Ok,

Updated to below, and am still getting the same error:

def projectdetail(request):
    projectList = Project.objects.all()
    projectExpenseDetails = Expense.objects.select_related('project').all()
    return render(request, 'busprojectdetail.html', {'project': project, 'expense_list': projectExpenseDetails})
Exception Type:NameError
Exception Value:
name 'project' is not defined
Exception Location:/Users/ProductionEnv/Desktop/test/test1/dev/core/views.py in projectdetail, line 239
Best,
Kean


On 6 Sep 2019, at 21:32, Bhoopesh sisoudiya <bhoop...@gmail.com> wrote:

Sorry my mistake


def projectdetail(request):
    projectList = Project.objects.all()
    projectExpenseDetails = Expense.objects.select_related('project').all()
    return render(request, 'busprojectdetail.html', {'project': projectList, 'expense_list': projectExpenseDetails})

Kean

unread,
Sep 7, 2019, 7:17:11 AM9/7/19
to Bhoopesh sisoudiya, django...@googlegroups.com
Hi,

removing did, not work, still getting same error.
Welcome any other help from the wider community in reference to this issue.
best,

Kean

On 6 Sep 2019, at 22:26, Bhoopesh sisoudiya <bhoop...@gmail.com> wrote:

Try after removing related_name='expenses' from Expenses model.

On Sat, Sep 7, 2019, 2:28 AM Kean <kea...@gmail.com> wrote:
Hi Bhoopesh,

If this is a simple issue to resolve, please provide code which works.
Reading an abstract reference, is welcome, but is not really helping to solve as one can always reference a source. 

Please advise solution that works, and then reference a learning resource, so user knows where to go for learning, but with solution in hand.

Best,

Kean

On 6 Sep 2019, at 21:54, Bhoopesh sisoudiya <bhoop...@gmail.com> wrote:


On Sat, Sep 7, 2019, 2:20 AM Kean <kea...@gmail.com> wrote:
Don’t understand?

On 6 Sep 2019, at 21:41, Bhoopesh sisoudiya <bhoop...@gmail.com> wrote:

'project' inside select_related() is foreign key in Expenses modal of Project modal.
Reply all
Reply to author
Forward
0 new messages