Skip to content
Advertisement

How do I get multiple rows from django database?

Hello I am trying to create an employee attendance program and I want to make it so that the employees can see the total hours they worked.

This is the code that creating the problem:

elif 'checkName' in response.POST:
    if form.is_valid():
        n = form.cleaned_data["name"]
        t = Name.objects.filter(name=n)
        totalHours = datetime.combine(t.date, t.timeOut) - datetime.combine(t.date, t.timeIn)
        messages.success(response, totalHours)
        return redirect('/')

The error I get is

'QuerySet' object has no attribute 'date' 

and if I use

t = Name.objects.get(name=n)

it shows an error that says

'get() returned more than one Name -- it returned 2!'

Advertisement

Answer

You must use filter and iterate over results as get is used to fetch exactly one record. Try this:

...
names = Name.objects.filter(name=n)
totalHours = 0
for name in names:
    totalHours += (
        datetime.combine(name.date, name.timeOut)
        - datetime.combine(name.date, name.timeIn)).seconds / 3600
...
User contributions licensed under: CC BY-SA
4 People found this is helpful
Advertisement