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

kg.*_*kg. 3 django properties django-models 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
Run Code Online (Sandbox Code Playgroud)

如果我可以在字段旁边显示总计算统计数据以更改"更改字符"管理页面中的基本统计数据,那将是很好的,但我不清楚如何将该信息合并到页面中.

Dmi*_*nko 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')
Run Code Online (Sandbox Code Playgroud)

这适用于列表页面,如果您想在编辑页面上自定义数据,则需要覆盖模板.