Почему администратор django иногда использует какое-то поле модели в индексе вместо метода __unicode__? - PullRequest
3 голосов
/ 08 октября 2011

Для некоторых моих моделей, Django-admin, в индексе объектов модели вместо отображения вывода метода __unicode__, как обычно, он просто отображает там одно из полей модели.

Это обычно происходит, когда в моей модели есть что-то вроде:

class Meta:
    ordering = ['name']

, тогда отображается значение поля name (даже если есть метод __unicode__), но не всегда, иногда он просто отображает то, что говорит __unicode__, даже если класс Meta упорядочен.

Все мои методы Unicode вполне нормальны, что-то вроде:

def __unicode__(self):
    return u'[%s] %s' % (self.field, self.name, )

Я озадачен, почему поле иногда используется вместо __unicode__, и как я могу заставить его всегда использовать метод __unicode__?Это Django 1.3.Это ошибка в Django?

1 Ответ

2 голосов
/ 08 октября 2011

Вы можете настроить поля, отображаемые в админке django, используя опцию list_display в вашем ModelAdmin классе.

Метод модели __unicode__ и опция Meta.ordering не влияют на отображаемые поля.

Если вы не установите list_display, то по умолчанию будет отображаться один столбец со строкой Юникода для каждого объекта.

Если строка Unicode не отображается для вашей модели, похоже, что вы установили list_display. Например, чтобы отобразить поле имени вместо строки Unicode, вы должны сделать:

class MyModelAdmin(models.ModelAdmin):
    list_display = ['name'] 

Если вы хотите отобразить строку Unicode и других полей, просто включите __unicode__ в list_display.

class MyModelAdmin(models.ModelAdmin):
    list_display = [`__unicode__`, 'name'] 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...