Для Чарфилда с выбором, как использовать удобочитаемое имя в list_display через чужую клавишу?
Давайте предположим, что у меня есть следующее:
models.py:
VALUE_CHOICES = (('0', 'ZERO'),
('1', 'ONE'))
class ModelA(models.Model):
def val(self):
return self.model_b.value or ''
class ModelB(models.Model):
modela = models.OneToOneField(ModelA, related_name="model_b", null=False)
value = models.CharField(choices = VALUE_CHOICES)
а также
admin.py:
class ModelAAdmin(ModelAdmin):
list_display = ['val']
Когда я пытаюсь отобразить мой ModelA
список в админ-сайте он отображает 0
или же 1
и не ZERO
или же ONE
,
Как я мог изменить это, чтобы оно отображало удобочитаемое имя из VALUE_CHOICES
в списке с админа сайта?
1 ответ
Решение
Из документов и для поля val
,
class ModelAAdmin(ModelAdmin):
list_display = ['get_val_display']
Это должно сделать работу.
[EDIT by OP] Мне не удалось заставить его работать таким образом, но этот метод был действительно хорошим предложением. Вот как я это использовал get_FOO_display()
метод (и он работал как шарм).
Я только изменил мой ModelA.val()
метод:
def val(self):
return self.model_b.get_value_display()