我们有一个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__并引发异常,如果它被直接调用,但我认为这行不通。而且,Django当然有时需要ModelFields直接调用,所以我不能就这样去做。
如果可能Exception的method话,我想提出或确保他们获得他们必须使用的信息。
例如,我需要他们在模板中随处使用该方法:
{{ obj.get_my_attr_safe }}
而不是
{{ obj.my_attr }}
解决方案不一定是Pythonic,也许有一种方法可以PyCharm只使用。就足够了。
慕莱坞森
相关分类