自定义模型字段输出格式

时间:2019-06-03 18:38:46

标签: python django python-3.x django-models

我有一个模特:

class Cat(models.Model):
   number = models.IntegerField(...)

如何修改输出,以便在调用cat.number时将其转换为str,并在开头添加两个零? ( 12->“ 0012” )。

我无法编写单独的方法/属性来获取此值,只能使用number的{​​{1}}属性。

1 个答案:

答案 0 :(得分:1)

使用属性。

class Cat(models.Model):
    number = models.IntegerField(...)

    @property
    def number5c(self):
        return '{:05}'.format( self.number )

,然后引用cat_instance.number5c而不是.number。如果要保留名称“ number”,则需要重命名模型字段并定义一个setter ...

class Cat(models.Model):
    db_number = models.IntegerField(...)

    @property
    def number(self):
        return '{:05}'.format( self.db_number )
    @number.setter
    def number( self, value)
        # maybe raise an error here, if value is not int or str
        self.db_number = int( value)