Как добавить метки для моделей Django.IntegerChoicesPython

Программы на 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 }}
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»