Desead
@Desead

Как выбрать все choice в модели для передачи их в шаблон?

Есть простая модель, в которой есть поле для выбора статуса сделки:

class ModelDeal(models.Model):
    STATUS_CHOISES = (
        ('ok', 'Выполнена'),
        ('new', 'Новая заявка'),
        ('cancel', 'Отменена'),
        ('error', 'Ошибка'),
        ('timesup', 'Время вышло'),
    )
    deal_status = models.CharField('Статус', max_length=50, choices=STATUS_CHOISES, default='new')


Мне нужно в html шаблон передать все возможные STATUS_CHOISES.
Раньше я делал так: temp=ModelDeal.objects.all() и далее составлял нужный мне список из этих перечислений, но раньше такая модель у меня задавалась один раз при создании и была особо не изменяемой. А сейчас этот choises у меня в основной модели, которая активно используется и получить все записи чтобы собрать все choises как то глупо. По идее я должен уметь их все получить даже из пустой модели. Как мне это сделать ?
п.с. понимаю что все choises можно вынести в отдельную модель и вопрос решиться, но это не тот путь который мне нужен сейчас
  • Вопрос задан
  • 288 просмотров
Решения вопроса 1
AlexNest
@AlexNest
Работаю с Python/Django
Есть два варианта:
# Вызвать напрямую
var = ModelDeal.STATUS_CHOISES 
# Создать метод класса
@classmethod
    def return_choises(cls):
        return cls.STATUS_CHOISES 
***
var = ModelDeal.return_choises()

Как в первом, так и во втором случае будет возвращаться кортеж, с которым можно работать.
Второй вариант, на мой взгляд лучше, тк в методе можно перед возвращением обработать данные (преобразовать в словарь и т.д.)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы