Перезаписать атрибут как функцию Django
Я имею class A(models.Model)
с атрибутом name
, Я использую его в шаблоне и просматривать как obj_a.name
, Мне нужно переписать name
attr как функция и когда я пишу obj_a.name
Я бы получил ответ от функции getName
, Как я могу сделать это в Django
а также Python
? В Laravel PHP
это $this->getNameAttribute()
и я могу переписать возвращение name
с объекта. Name
Это только пример, и я хочу использовать его почти со всеми атрибутами данного класса.
class Item(caching.base.CachingMixin, models.Model):
_name = models.CharField(_('Name'), max_length=100, db_column="name",
help_text=_('Item name'))
@property
def name(self):
return self._name
@name.setter
def name(self, value):
self._name = value
2 ответа
Вы можете достичь этого поведения с property
,
class A(models.Model):
_name = Field()
@property
def name(self):
return self._name
Я нашел решение идеально подходит для моего использования:
def __getattribute__(self, name):
if name == 'name':
return 'xxx'
return super(Item, self).__getattribute__(name)