在模型方法中放置改变实例的逻辑是否正确?
django文档中的示例都是不改变实际实例但只返回某些特定信息的方法。
即。来自django docs的模型方法示例:
def is_midwestern(self):
"Returns True if this person is from the Midwest."
return self.state in ('IL', 'WI', 'MI', 'IN', 'OH', 'IA', 'MO')
我想做什么
def publish(self):
"Publishes this video."
self.published = True
# some other related business logic here
这被认为是好的吗?或者这应该去别的地方?
答案 0 :(得分:4)
是的,将对象抽象操作作为方法进行抽象是一种很好的面向对象设计,特别是如果它们只影响该对象。
如果你只是做琐碎的getter / setter方法(我们不是在这里编写Java ......),那是没有必要的,但是既然你提到还有其他业务逻辑,我认为这是一个很好的设计决定。