I extended the User model using my account
app.
Model Account app:
from django.db import models
from django.contrib.auth.models import User
from departments.models import Department
class Account(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
profile_pic = models.ImageField(upload_to='profile_pics', blank=True)
department = models.ForeignKey(
Department, on_delete=models.SET_NULL, null=True, related_name='department')
def __str__(self):
return self.user.username
Now I need to send the count of users from the same department to my template...
View:
from django.contrib.auth.models import User
@login_required
def home(request):
context = {
'title': 'Dashboard',
'department_members': 'department_members': User.objects.filter(department=request.user.account.department).count(),
}
return render(request, 'app/dashboard.html', context)\
department_members is always 1 even though I have more users on the same department.
I figure that the problem is that User
don't have department
field by default, so I can't say User.account.objects.filter(department=request.user.account.department)
I've tried a lot of queries and looked into django
docs but I could't find the proper manner on how to retrieve this info.
Anyone have the same problem? Any tips on how I can debug/create my query in a better way?
Thanks to all in advance!
CodePudding user response:
Maybe changing department_members
queryset to:
context = {
'title': 'Dashboard',
'department_members': Account.objects.filter(department=request.user.account.department).count() if hasattr(request.user, "account") else 0,
}
Solves your problem.