Как добавить метки для моделей Django.IntegerChoices ⇐ Python
-
Гость
Как добавить метки для моделей Django.IntegerChoices
У меня есть два подкласса IntegerChoices в одной из моих моделей django, которые определяют приоритеты заявок для API. Я хотел бы, чтобы при отображении приоритета и статусов на моей веб-странице отображалась метка, а затем при использовании API отправлялось целое число, соответствующее метке. Это мой код:
класс Ticket(models.Model): Статусы классов (models.IntegerChoices): ОТКРЫТЬ = 2, 'Открыть' В ОЖИДАНИИ = 3, «В ожидании» РЕШЕНО = 4, «Решено» ЗАКРЫТО = 5, «Закрыто» Приоритеты класса (models.IntegerChoices): НИЗКИЙ = 1, «Низкий» СРЕДНИЙ = 2, «Средний» ВЫСОКИЙ = 3, «Высокий» СРОЧНО = 4, «Срочно» приоритет = модели.IntegerField(по умолчанию=Priorities.LOW, выбор=Priorities.choices) статус = models.IntegerField(по умолчанию=Statuses.OPEN, choice=Statuses.choices) Затем я пытаюсь получить доступ к метке в своем приложении через
Приоритет: {{ Ticket.priority.label }} Статус: {{ Ticket.status.label }} Но ничего не появляется. Кажется, что документация Django для нового класса IntegerChoices очень скудна, и в ней неясно, как работает функция маркировки.
Я также пробовал отображать метки следующим образом:
OPEN = 2, _('Открыть') Но потом я получил сообщение об ошибке: «имя '_' не определено»
Есть какие-нибудь указания в правильном направлении, что мне нужно делать?
ОБНОВЛЕНИЕ
Для тех, кому нужен ответ, я это понял.
Я понял, что ошибка при отрисовке меток возникла из-за того, что эта строка не была импортирована в начале моих моделей:
из django.utils.translation импортируйте gettext_lazy как _ с этого момента, чтобы получить доступ к меткам из шаблона, я реализовал 2 функции get в своей модели билета
def get_status(self): вернуть self.Status(self.status).label защита get_priority (сам): вернуть self.Priorities(self.priority).label а затем, чтобы захватить их в шаблон, вы делаете следующее:
{{ Ticket.get_priority }}
{{ Ticket.get_status }}
У меня есть два подкласса IntegerChoices в одной из моих моделей django, которые определяют приоритеты заявок для API. Я хотел бы, чтобы при отображении приоритета и статусов на моей веб-странице отображалась метка, а затем при использовании API отправлялось целое число, соответствующее метке. Это мой код:
класс Ticket(models.Model): Статусы классов (models.IntegerChoices): ОТКРЫТЬ = 2, 'Открыть' В ОЖИДАНИИ = 3, «В ожидании» РЕШЕНО = 4, «Решено» ЗАКРЫТО = 5, «Закрыто» Приоритеты класса (models.IntegerChoices): НИЗКИЙ = 1, «Низкий» СРЕДНИЙ = 2, «Средний» ВЫСОКИЙ = 3, «Высокий» СРОЧНО = 4, «Срочно» приоритет = модели.IntegerField(по умолчанию=Priorities.LOW, выбор=Priorities.choices) статус = models.IntegerField(по умолчанию=Statuses.OPEN, choice=Statuses.choices) Затем я пытаюсь получить доступ к метке в своем приложении через
Приоритет: {{ Ticket.priority.label }} Статус: {{ Ticket.status.label }} Но ничего не появляется. Кажется, что документация Django для нового класса IntegerChoices очень скудна, и в ней неясно, как работает функция маркировки.
Я также пробовал отображать метки следующим образом:
OPEN = 2, _('Открыть') Но потом я получил сообщение об ошибке: «имя '_' не определено»
Есть какие-нибудь указания в правильном направлении, что мне нужно делать?
ОБНОВЛЕНИЕ
Для тех, кому нужен ответ, я это понял.
Я понял, что ошибка при отрисовке меток возникла из-за того, что эта строка не была импортирована в начале моих моделей:
из django.utils.translation импортируйте gettext_lazy как _ с этого момента, чтобы получить доступ к меткам из шаблона, я реализовал 2 функции get в своей модели билета
def get_status(self): вернуть self.Status(self.status).label защита get_priority (сам): вернуть self.Priorities(self.priority).label а затем, чтобы захватить их в шаблон, вы делаете следующее:
{{ Ticket.get_priority }}
{{ Ticket.get_status }}
Мобильная версия