Как сделать так, чтобы значения поля ModelChoiceField показывали на странице фактические значения, а не числа?

В моей форме (categories) есть поле (NewListing), которое должно иметь 4 значения, которые могут быть выбраны в форме на одной из моих страниц. Однако, когда я хочу показать, какое значение было выбрано, я получаю число вместо значения.

Значения следующие:

  • Новый
  • Отремонтированный
  • Открытый
  • Подержанные

Таким образом, если ранее было выбрано значение New, то при отображении этого значения на другой странице оно будет показано как 1 вместо New.

Как это исправить?

models.py:

class Listing(models.Model):
    ...
    condition = models.CharField(max_length=20)

forms.py:

condition_choices = (
    (1, 'New'),
    (2, 'Refurbished'),
    (3, 'Opened'),
    (4, 'Used'),
)

class NewListing(forms.Form):
    ...
    condition = forms.ChoiceField(choices=condition_choices, widget=forms.Select(attrs={
        'class': 'condition',
    }))

html: (не имеет отношения к делу, но показывает, где он будет использоваться - он выбран на другой странице, хотя - это работает нормально)

<div class="condition">
    <p> Condition: <strong> {{ listing.condition }} </strong></p>
</div>

Замените элементы в кортеже на дружественные человеку значения.

CONDITION_CHOICES = [
    ('NEW', 'New'),
    ('REF', 'Refurbished'),
    ('OPE', 'Opened'),
    ('USE', 'Used'),
]
Вернуться на верх