Как я могу вызвать методы или свойства модели из Django Admin? - PullRequest
3 голосов
/ 19 мая 2010

Есть ли естественный способ отображения методов или свойств модели на сайте администратора Django? В моем случае у меня есть базовая статистика для персонажа, который является частью модели, но другие вещи, такие как эффекты статуса, которые влияют на общий расчет для этой статистики:

class Character(models.Model):
    base_dexterity = models.IntegerField(default=0)

    @property
    def dexterity(stat_name):
          total = self.base_dexterity
          total += sum(s.dexterity for s in self.status.all()])
          return total

Было бы неплохо, если бы я мог отобразить общую вычисленную статистику рядом с полем, чтобы изменить базовую статистику на странице администратора Изменить символ, но мне не ясно, как включить эту информацию в страницу.

1 Ответ

5 голосов
/ 20 мая 2010

Хороший пример из документов :

class Person(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    color_code = models.CharField(max_length=6)

    def colored_name(self):
        return '<span style="color: #%s;">%s %s</span>' % (self.color_code, self.first_name, self.last_name)
    colored_name.allow_tags = True

class PersonAdmin(admin.ModelAdmin):
    list_display = ('first_name', 'last_name', 'colored_name')

Это работает для страниц списка, если вам нужны пользовательские данные на странице редактирования, вам нужно переопределить шаблон .

...