如何从Django Admin调用模型方法或属性?

时间:2010-05-19 19:08:45

标签: django django-models properties django-admin

有没有一种在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 个答案:

答案 0 :(得分:5)

来自docs的好例子:

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')

适用于列表页面,如果您想在编辑页面上使用自定义数据,则需要override template