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


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

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

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

6 70

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__ метод, как уже упоминалось. Но дело в том, что админ сохраняет строковое представление объекта при создании событий, поэтому если вы добавляете __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')