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:
JavaScript
x
8
1
elif 'checkName' in response.POST:
2
if form.is_valid():
3
n = form.cleaned_data["name"]
4
t = Name.objects.filter(name=n)
5
totalHours = datetime.combine(t.date, t.timeOut) - datetime.combine(t.date, t.timeIn)
6
messages.success(response, totalHours)
7
return redirect('/')
8
The error I get is
JavaScript
1
2
1
'QuerySet' object has no attribute 'date'
2
and if I use
JavaScript
1
2
1
t = Name.objects.get(name=n)
2
it shows an error that says
JavaScript
1
2
1
'get() returned more than one Name -- it returned 2!'
2
Advertisement
Answer
You must use filter
and iterate over results as get
is used to fetch exactly one record. Try this:
JavaScript
1
9
1
2
names = Name.objects.filter(name=n)
3
totalHours = 0
4
for name in names:
5
totalHours += (
6
datetime.combine(name.date, name.timeOut)
7
- datetime.combine(name.date, name.timeIn)).seconds / 3600
8
9