如何使一个函数像Django Admin中的字段一样?

时间:2016-10-17 10:39:18

标签: django django-models django-admin

我有一个基于项目列表的IntegerField模型。

LIST = (
    (0, 'None'),
    (1, 'Male'),
    (2, 'Female'),
)

class MyModel(models.Model):
    gender = models.IntegerField(choices=LIST, default=0)
    some_unimportant_value1 ...
    some_unimportant_value2 ...

MyModel类中还有一个函数,如果尚未为性别指定值,则返回False。

    def genderHasValue(self):
        if self.gender == 0:
            return False

在Django Admin区域查看MyModel列表时,我希望能够看到genderHasValue函数的计算结果。例如,MyModel的Django Admin区域可能如下所示:

some_unimportant_value1    some_unimportant_value2    genderHasValue
123                        456                        N
789                        012                        Y

这假设some_unimportant_value1行的IntegerField为0,some_unimportant_value2行的IntegerField为1。

可以执行genderHasValue函数吗?

谢谢。

1 个答案:

答案 0 :(得分:2)

是的,这可以这样完成:

# admin.py
class MyModelAdmin(admin.ModelAdmin):
    list_display = ['some_unimportant_value1', 'some_unimportant_value1', 'genderHasValue']

    def genderHasValue(self, obj):
        if self.gender == 0:
            return False
        return True

# The file where you configure your admin
admin.site.register(MyModel, MyModelAdmin)

更新: 在评论中回答你的后续问题:是的,有可能,只需这样:

genderHasValue.short_description = "Gender Has Value"

在您的属性定义

之后