Как запросить модель User по 'пользовательским' полям? (django.db.models.fields.related_descriptors.ReverseOneToOneDescriptor)
Я расширил модель User с помощью моего 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
Теперь мне нужно отправить количество пользователей из одного отдела в мой шаблон...
Вид:
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 всегда 1, даже если у меня больше пользователей в одном отделе.
Я понял, что проблема в том, что User по умолчанию не имеет поля department, поэтому я не могу сказать User.account.objects.filter(department=request.user.account.department)
Я перепробовал множество запросов и изучил django документацию, но так и не смог найти правильный способ получения этой информации.
У кого-нибудь есть такая же проблема? Любые советы о том, как я могу отладить/составить свой запрос лучшим образом?
Заранее всем спасибо!
Можно изменить department_members queryset на:
context = {
'title': 'Dashboard',
'department_members': Account.objects.filter(department=request.user.account.department).count() if hasattr(request.user, "account") else 0,
}
Решит вашу проблему.