Этот вопрос относится к агрегации/аннотации Django в версии 1.1. Предположим, у меня есть простая модель с IntegerField, которому передан параметр «выбор». В этом случае он отображается в кортеж GENDERS, как показано. Обычно в шаблоне (или представлении) я могу ссылаться на текстовое значение пола с помощью функции get_gender_display().
Однако, когда я аннотирую количество полов, как я делаю в представлении ниже, я не могу найти текстовое значение для каждого пола, используя функцию get_gender_display(). См. фрагмент шаблона ниже. Как мне вернуть текстовое значение пола?
Я никогда раньше не использовал Django Aggregation, поэтому, возможно, мне не хватает очевидного решения. Спасибо, что рассмотрели мою ситуацию.
модели.py
GENDERS = (
('',' '),
(1,'Female'),
(2,'Male'),
)
class Subscriber(models.Model):
gender = models.IntegerField(blank=True, null=True, choices=GENDERS)
просмотры.py
from django.db.models import Count
def myview(request):
...
sum_gender = Subscriber.objects.values('gender').annotate(gender_sum=Count('gender'))
context = { 'sum_gender':sum_gender, }
return render_to_response(template_name, context,context_instance=RequestContext(request))
шаблон
...
{% for genderAndsum in sum_genders %}
<div>{{ genderAndsum.get_gender_display }} {{ genderAndsum.gender_sum }}</div>
{% endfor %}
...