Django: Показать варианты "подробное" имя при запросе (и выбор в связанной модели) - PullRequest
0 голосов
/ 25 апреля 2018

Я пытаюсь написать представление, которое показывает таблицу с количеством элементов на статус.

Упрощенный вид моих моделей выглядит следующим образом:

from django.db import models

class Entity(models.Model):
    name = models.CharField(max_length=20)

class Status(models.Model):
    BAD = 0
    NICE = 1
    GREAT = 2
    STATUS_CHOICES = (
        (BAD, 'Bad'),
        (NICE, 'Nice'),
        (GREAT, 'Great')
    )
    entity = models.OneToOneField(Entity, on_delete=models.CASCADE, 
                                  related_name='status')
    status = models.IntegerField(choices=STATUS_CHOICES, db_index=True)

Итак, в моем файле views.py у меня есть такое представление:

from django.shortcuts import render
from django.db.models import Count

def my_summary(request):
    q = Entity.objects.values('status__status').annotate(n=Count('pk'))
    context = {'table_data':q}
    return render(request, 'my_app/summary_template.html', context)

Проблема, с которой я сталкиваюсь, заключается в том, что при рендеринге шаблона я получаю только номер статуса и мне нужно показать метку этого статуса.Итак, вместо показа

 status | entities
 -------+---------
   0    | 3
   1    | 5
   2    | 9

я бы хотел показать:

 status  | entities
 --------+---------
   BAD   | 3
   NICE  | 5
   GREAT | 9

Есть ли способ сделать это?Кто-нибудь может указать мне правильное направление?

1 Ответ

0 голосов
/ 25 апреля 2018

Django автоматически генерирует геттеры для меток выбора, в вашем случае это будет get_status_display. Смотри https://docs.djangoproject.com/en/2.0/ref/models/instances/#django.db.models.Model.get_FOO_display

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...