Подтвердить что ты не робот

Django "xxxxxx Object" отображает настройку в боковой панели администратора

Я хотел бы изменить поведение по умолчанию того, как боковая панель последних изменений администратора отображает имя добавленных "объектов". См. Рисунок ниже:

In the recent actions module, it also shows new objects as "MyModelName object"

Я хотел бы изменить, как они названы в Admin. В идеале я хотел бы изменить его с объекта "MyModelName" до, как в примере с объектом "Политика", что-то вроде "Политика: {{значение поля политики" Имя политики ".}}.

Я думал, что __unicode__ для моей модели пациента обработал это, но это не похоже на. Любая помощь приветствуется.

4b9b3361

Ответ 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