Django "xxxxxx Object" отображает настройку в боковой панели администратора
Я хотел бы изменить поведение по умолчанию того, как боковая панель последних изменений администратора отображает имя добавленных "объектов". См. Рисунок ниже:
![In the recent actions module, it also shows new objects as "MyModelName object"]()
Я хотел бы изменить, как они названы в Admin. В идеале я хотел бы изменить его с объекта "MyModelName" до, как в примере с объектом "Политика", что-то вроде "Политика: {{значение поля политики" Имя политики ".}}.
Я думал, что __unicode__
для моей модели пациента обработал это, но это не похоже на. Любая помощь приветствуется.
Ответы
Ответ 1
__unicode__
делает это. Ваша модель должна выглядеть примерно так:
class SomeModel(models.Model):
def __unicode__(self):
return 'Policy: ' + self.name
На Python 3 вам нужно использовать __str__
:
def __str__(self):
return 'Policy: ' + self.name
Ответ 2
Использование метода __str__
работает на Python3 и Django1.8:
class MyModel(models.Model):
name = models.CharField(max_length=60)
def __str__(self):
return 'MyModel: {}'.format(self.name)
Ответ 3
Строка, которую вы видите, исходит из метода __unicode__
, как упомянуты другие. Но дело в том, что администратор сохраняет строковое представление объекта при создании события журнала, поэтому, если вы добавили реализацию __unicode__
после сохранения записи в журнале, вы не увидите новые заголовки по старым элементам, только после того, как вы сделаете несколько новых деятельность
Ответ 4
Ответы, в которых упоминаются __str__
и __unicode__
являются правильными. Как указано в документации однако, начиная с версии 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"
Вы также можете использовать вышеперечисленное в объектах Model
non-.
Ответ 5
Вы правы, думая, что __unicode__
делает это. У меня есть это прямо сейчас:
class Film(models.Model):
title = models.CharField(max_length=200)
...
def __unicode__(self):
return self.title
Когда я смотрю в последнем списке действий, я вижу название фильма, которое я только что редактировал.
Ответ 6
Вам нужно определить, какой столбец вы хотите отобразить...
например:
class POAdmin(admin.ModelAdmin):
list_display = ('qty', 'cost', 'total')
Ответ 7
Поскольку этому вопросу 6 лет, многое изменилось. Позвольте мне обновить его. С python3.6 и последней версией Django (2.1.2) вы всегда должны использовать __str__()
в новом коде. __unicode__()
- старая история для python2.7, потому что в python3 str
- это unicode
.
Ответ 8
Это будет работать, используя def str (self): который возвращает self.title
class Blog(models.Model): title= models.CharField(max_length=200) def __str__(self): return self.title