У нас есть проект Django
, и я сталкивался с этой проблемой несколько раз в этом году.
Я упросту пример:
class MyModel(Model):
my_attr = ....
...
def get_my_attr_safe():
if not self.my_attr:
return somecalculation()
return self.my_attr
Я хочу заставить разработчиков использовать get_my_attr_safe()
вместо my_attr
.
Это огромная и сложная модель.
Моя идея состояла в том, чтобы как-то переопределить __getattribute__
и вызвать Exception, если он вызывается напрямую, но я не думаю, что это сработает.Более того, Django
, конечно, иногда нужно позвонить ModelFields
напрямую, поэтому я не могу просто сделать это таким образом.
Я хочу либо поднять Exception
, либо убедиться, что они получат информацию о том, что они должны использовать method
, если это возможно.
Например, мне нужно, чтобы они использовали метод везде в шаблонах:
{{ obj.get_my_attr_safe }}
вместо
{{ obj.my_attr }}
Решение не должно быть Python
ic, может быть, есть способ сделать это, используя только PyCharm
.Этого было бы достаточно.