Получить общее количество объектов с определенным статусом
Пытаюсь получить общее количество объектов для отображения на главной странице.
Вот мой код
def dashboard(request):
total_issues = Issue.objects.all().count()
open_issues = Issue.objects.filter(mark_as='Open').count()
closed_issues = Issue.objects.filter(mark_as='Closed').count()
context = {'ordered_issues': ordered_issues,
'total_issues': total_issues,
'open_issues': open_issues,
'closed_issues': closed_issues}
return render(request, 'issues/total_issues.html', context)
и моя модель
class Issue(models.Model):
MARK_AS = ((True, 'Open'), (False, 'Closed'))
title = models.CharField(max_length=100)
content = models.TextField()
date_posted = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(User, on_delete=models.CASCADE)
assignee = models.ForeignKey(Profile, on_delete=models.SET_NULL, null=True, blank=True)
mark_as = models.BooleanField(choices=MARK_AS, default=True)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('issue-detail', kwargs={'pk': self.pk})
Ничего не выводится
Что я сделал не так?
Хотя значения, отображаемые в выпадающем списке для поля mark_as, будут 'Open' и 'Closed', это не фактические значения поля. Ваше поле mark_as является BooleanField, поэтому оно может иметь только значения True или False. Я удивлен, что вы не получаете ошибку вместо пустого вывода в HTML.
Попробуйте это:
def dashboard(request):
total_issues = Issue.objects.all().count()
open_issues = Issue.objects.filter(mark_as=True).count() # CHANGED
closed_issues = Issue.objects.filter(mark_as=False).count() # CHANGED
context = {'ordered_issues': ordered_issues,
'total_issues': total_issues,
'open_issues': open_issues,
'closed_issues': closed_issues}
return render(request, 'issues/total_issues.html', context)
