Я хотел бы изменить поведение по умолчанию того, как на боковой панели недавних изменений администратора отображается имя добавленных «объектов». См. Картинку ниже:
Я хотел бы изменить их название в админке. В идеале я хотел бы иметь возможность изменить его с «MyModelName object» на, как в примере объекта «Policy», на что-то вроде «Policy: {{значение поля« Policy Name »политики.}}.
Я думал, что __unicode__
моя модель пациента справилась с этим, но, похоже, это не так. Любая помощь приветствуется.
django
django-models
django-admin
Патрикн
источник
источник
__unicode__
делает это. Вставьте свой код, чтобы мы могли увидеть, что не так__unicode__
не работал у меня в Python 3. Однако__str__
работал, как описано в ответе нижеОтветы:
__unicode__
делает это. Ваша модель должна выглядеть примерно так:На Python 3 вам нужно использовать
__str__
:источник
Использование
__str__
метода работает на Python3 и Django1.8:источник
Строка, которую вы видите, исходит из
__unicode__
метода, как упоминали другие. Но дело в том, что администратор сохраняет строковое представление объекта при создании события журнала, поэтому, если вы добавите__unicode__
реализацию после того, как запись журнала была сохранена, вы не увидите новые заголовки в старых элементах, только после того, как вы сделаете новое действие.источник
Упоминание ответов
__str__
и__unicode__
методов верны. Однако, как указано в документации , начиная с версии 1.6 (я думаю), вы можете использоватьpython_2_unicode_compatible
декоратор как для Python 2, так и для Python 3:Вы также можете использовать это в не-
Model
объектах.источник
Вам нужно определить, какой столбец вы хотите отображать ...
например:
источник
Вы правы, думая, что
__unicode__
это так. У меня сейчас это работает:Когда я смотрю в список последних действий, я вижу название фильма, который я только что смонтировал.
источник
Это будет работать, используя def str (self): который возвращает self.title
Используйте что-то вроде:
источник
Поскольку этому вопросу 6 лет, многое изменилось. Позвольте мне обновить его. С python3.6 и последней версией Django (2.1.2) вы всегда должны использовать
__str__()
новый код.__unicode__()
это старая история для python2.7, потому что в python3str
этоunicode
.источник
Добавив
__str__()
метод в модельPatient
следующим образом:вместо объекта отобразит имя пациента. Подробности здесь
источник