我正在用Django写一个项目,我看到80%的代码都在文件models.py
中。这段代码令人困惑,过了一段时间后,我就不明白到底发生了什么。
这是困扰我的问题:
User
的实例,但技术上应该统一创建它们
这里有一个简单的例子。一开始,User
模型是这样的:
class User(db.Models):
def get_present_name(self):
return self.name or 'Anonymous'
def activate(self):
self.status = 'activated'
self.save()
随着时间的推移,它变成了这样:
class User(db.Models):
def get_present_name(self):
# property became non-deterministic in terms of database
# data is taken from another service by api
return remote_api.request_user_name(self.uid) or 'Anonymous'
def activate(self):
# method now has a side effect (send message to user)
self.status = 'activated'
self.save()
send_mail('Your account is activated!', '…', [self.email])
我想要的是在代码中分离实体:
在Django中实现这样一种方法有哪些好的实践呢?