この質問は、1.1 の Django Aggregation/Annotation に関するものです。「choices」パラメーターが渡された IntegerField を持つ単純なモデルがあるとします。この場合、示されているように GENDERS タプルにマップされます。通常、テンプレート (またはビュー) では、get_gender_display() 関数を使用して性別のテキスト値を参照できます。
ただし、以下のビューのように性別カウントに注釈を付けると、get_gender_display() 関数を使用して各性別のテキスト値を検索できません。以下のテンプレートの抜粋を参照してください。性別のテキスト値を取り戻すにはどうすればよいですか?
これまで Django Aggregation を使用したことがないため、明らかな解決策が欠けている可能性があります。私の状況を考慮していただきありがとうございます。
models.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 %}
...