Пользовательское форматирование выходного поля модели - PullRequest
0 голосов
/ 03 июня 2019

У меня есть модель:

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

Как я могу изменить вывод, чтобы при вызове cat.number я преобразовал его в str и добавил два нуля в начале? ( 12 -> "0012" ).

Я не могу написать отдельный метод / свойство для получения этого значения, должен использоваться только атрибут number из cat.

1 Ответ

1 голос
/ 04 июня 2019

Используйте свойство.

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

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

и затем обратитесь к cat_instance.number5c вместо .number.Если вы хотите сохранить имя «число», вам нужно переименовать поле модели, а также определить сеттер ...

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)
...