如何使用方法添加管理自定义字段

时间:2016-08-02 17:11:03

标签: django django-admin

我跟随Django管理站点list_display自定义方法中的示例,我收到错误' colored_name()只需1个参数(2个给定)',什么是问题

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 format_html(
        '<span style="color: #{};">{} {}</span>',
        self.color_code,
        self.first_name,
        self.last_name,
    )

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

1 个答案:

答案 0 :(得分:1)

您应该在colored_name内定义PersonAdmin class而不是Person Model,因为它是用于管理面板的方法。此外,它还会收到表示obj实例的person参数。

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

    def colored_name(self, obj):
        return format_html(
            '<span style="color: #{};">{} {}</span>',
            obj.color_code,
            obj.first_name,
            obj.last_name,
         )