Как объединить целочисленное поле в шаблоне django, если две модели имеют одинаковое значение поля? - PullRequest
0 голосов
/ 09 июня 2019

У меня есть эта модель:

class LoggedUserDepartement(models.Model):
    department  = models.CharField(max_length=250, default='Care')
    date        = models.DateField()
    login_count = models.PositiveIntegerField(default=0)

У меня есть этот набор запросов в моем views.py:

department_count = LoggedUserDepartement.objects.all()  

и в моем шаблоне я сделал это:

{% for item in department_count %}
   {{item.date }} {{item.login_count}} {{item.department}}<br>
   {% endfor %}

Это результат, который я получаю:

June 8, 2019 3 css
June 8, 2019 1 carefr
June 9, 2019 2 css
June 9, 2019 1 carefr

Так что я не могу сделать здесь, когда у меня есть одно и то же значение в поле отдела, как я могу объединить 2 элемента и объединить значение счетчика входа в систему и не показывать значение поля даты? Вместо результата, который у меня есть сейчас, я хочу получить следующее:

{% for item in department_count %}
   {{item.login_count}} {{item.department}}<br>
   {% endfor %}
5 css
3 carefr

PS: поле даты не требуется в этом наборе запросов, но я буду использовать его в других наборах запросов в будущем, поэтому я не могу удалить его.

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 09 июня 2019

Мы можем сделать агрегат вроде:

from django.db.models import Sum

LoggedUserDepartment.objects.values('department').annotate(
    <b>total_login=Sum('login_count')</b>
).order_by('department')

и затем отобразить его как:

{% for item in department_count %}
    {{ item.<b>total_login</b> }} {{ item.<b>department</b> }}<br>
{% endfor %}

При этом я не уверен, что приведенное выше моделирование является лучшимспособ решения этой проблемы.Здесь в основном две проблемы:

  1. многие столбцы имеют повторяющиеся значения, похоже, вы должны сделать модель Department и связать ее с помощью ForeignKey
  2. ваша модель также хранит агрегированные данные (ну login_count с) вместо агрегирования по отдельным записям.

Это затруднит ведение баз данных.

...