从自己模型中的函数获取选择字段的显示值

时间:2018-01-23 05:12:20

标签: python django

我在模型类中有一个方法,我想在这样的模型中获取选择字段的显示值,但是我得到了一个奇怪的值。

这是代码:

class Actor(models.Model):
    PERSON = '0'
    ROLE = '1'
    AUTO = '2'
    TYPE_CHOICES = (
        (PERSON, 'Person'),
        (ROLE, 'Role'),
        (AUTO, 'Auto'),
    )
    alias = models.CharField(max_length=10, default='', unique=True)
    name = models.CharField(max_length=255, default='')
    email = models.EmailField(null=True, blank=True)
    actor_type = models.CharField(max_length=1, choices=TYPE_CHOICES, default=PERSON)
    long_description = models.TextField(max_length=long_description_max_length, default='', null=True, blank=True)

    def get_list_fields(self):
        list_fields = {
            'id' : self.id,
            'name' : self.alias,
            'description' : self.name,
            'extra_fields' : "[{}][{}]".format(
                self.email,
                getattr(self, 'get_actor_type_display')
            )
        }

        return list_fields

这是我得到的结果:

{'id': 1, 
 'name': 'hugo', 
 'description': 'Hugo Luis Villalobos Canto', 
 'extra_fields': '[hugo@utopia-software.net][functools.partial(>, field=)]'
}

我不知道functools.partial(>, field=)代表什么,我不知道如何获得我想要的结果:该字段当前内容的显示值。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

def get_list_fields(self):
        list_fields = {
            'id' : self.id,
            'name' : self.alias,
            'description' : self.name,
            'extra_fields' : "[{}][{}]".format(
                self.email,
                self.get_actor_type_display()
            )
        }

        return list_fields

试试这个

答案 1 :(得分:0)

您需要添加括号来调用get_display函数:

def get_list_fields(self):
    list_fields = {
        'id' : self.id,
        'name' : self.alias,
        'description' : self.name,
        'extra_fields' : "[{}][{}]".format(
            self.email,
            getattr(self, 'get_actor_type_display()')
        )
    }
    return list_fields