模型定义或单独服务层中的业务逻辑?

时间:2018-04-08 11:49:48

标签: python mongoengine

我想知道哪种方法是使用mongonegine python的模型(ORM)。

我有一个优惠券类直接映射到mongodb json文档。

class Coupon(Document):
    __collection__ = 'coupon'

    coupon = StringField()
    points = IntField()

    @property
    def increment(self):
        self.points += 1

    @property
    def decrement(self):
        self.points += 1

我发现错误的是,我们将 行为 绑定到数据库访问层,我认为这不是正确的做事方式(我可能完全错了。)

另一种方式(我认为更有意义)将业务逻辑委托给通常称为 service 层的其他层:

models.py

class Coupon(Document):
    __collection__ = 'coupon'

    coupon = StringField()
    points = IntField()

services.py

from models import Coupon

def increment_points(c_id):
   c_id.points+=1

我想知道哪种方法是正确的(假设我们有很多模型)。

问题:我们应该将行为绑定到模型还是将服务层用于业务逻辑?

注意:我添加了标记python,因为我看到很多人将行为和业务逻辑绑定到其代码库中的数据库访问层。很少有人听说过任何一个关于python web框架的教程。但它在Java和PHP中很常见。

0 个答案:

没有答案