Как запросить модель пользователя по «настраиваемым» полям? (django.db.models.fields.related_descriptors.ReverseOneToOneDescriptor)

Я расширил модель пользователя с помощью своего приложения account.

Приложение «Учетная запись модели»:

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 документы, но не смог найти правильный способ получения этой информации.

У кого-нибудь есть такая же проблема? Любые советы о том, как я могу лучше отлаживать/создавать свой запрос?

Спасибо всем заранее!

Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
0
0
14
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Возможно, изменить набор запросов department_members на:

context = {
        'title': 'Dashboard',
        'department_members': Account.objects.filter(department=request.user.account.department).count() if hasattr(request.user, "account") else 0,
    }

Решает вашу проблему.

Другие вопросы по теме