2016-05-16 8 views
0

Давайте предположим, что у меня есть следующие:Для Charfield с выбором, как использовать человекообразное имя в list_display через foreignkey?

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

С docs, и для поля val,

class ModelAAdmin(ModelAdmin): 
    list_display = ['get_val_display'] 

Это должно сделать работу.

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

Я только изменил мой ModelA.val() метод:

def val(self): 
    return self.model_b.get_value_display() 
+0

@vmonteco извините мой плохой. Я 'val' - обычное поле. Не заметил, что это метод :) – alix

+1

Нет проблем! get_foo_display() - единственное, что мне действительно нужно. Я также пробовал с 'list_display = ['movel_b__get_value_display']' хотя и не работал. :) – vmonteco

+0

'list_display = ['model_b__get_value_display']' * sorry – vmonteco

 Смежные вопросы

  • Нет связанных вопросов^_^