Django "xxxxxx Object" настройка отображения в боковой панели действий администратора
Я хотел бы изменить поведение по умолчанию, как боковая панель последних изменений администратора отображает имя добавленных "объектов". См. изображение ниже:
Я хотел бы изменить, как они называются в админке. В идеале я хотел бы иметь возможность изменить его с "объекта MyModelName" на, как в примере объекта "Policy", что-то вроде "Policy: {{ значение поля "Policy Name" политики. }}.
Я думал, что __unicode__
для моя модель пациента справилась с этим, но, похоже, нет. Любая помощь приветствуется.
6 ответов
__unicode__
для этого. Ваша модель должна выглядеть примерно так:
class SomeModel(models.Model):
def __unicode__(self):
return 'Policy: ' + self.name
на Python 3 вам нужно использовать __str__
:
def __str__(self):
return 'Policy: ' + self.name
С помощью __str__
метод работает на Python3 и Django1.8:
class MyModel(models.Model):
name = models.CharField(max_length=60)
def __str__(self):
return 'MyModel: {}'.format(self.name)
строке вы видите приходит из __unicode__
метод, как уже упоминалось. Но дело в том, что admin сохраняет строковое представление объекта при создании события log, поэтому если вы добавите __unicode__
реализация после того, как запись журнала была сохранена, вы не увидите новых заголовков на старых элементах, только после того, как вы сделаете некоторые новые действия
ответы упомянув __str__
и __unicode__
методы являются правильными. Как указано в docs однако, начиная с версии 1.6 (я думаю), вы можете использовать python_2_unicode_compatible
декоратор для и Python 2 и Python 3:
from __future__ import unicode_literals
from django.utils.encoding import python_2_unicode_compatible
@python_2_unicode_compatible
class MyClass(models.Model):
def __str__(self):
return "Instance of my class"
вы можете использовать выше в non -Model
объекты, а также.
Вы правы, думая, что __unicode__
это. У меня это работает прямо сейчас:
class Film(models.Model):
title = models.CharField(max_length=200)
...
def __unicode__(self):
return self.title
когда я смотрю в списке последних действий, я вижу название фильма, который я только что отредактировал.
вам нужно определить, какой столбец вы хотите отобразить...
например:
class POAdmin(admin.ModelAdmin):
list_display = ('qty', 'cost', 'total')