将域对象放在我的应用程序中的位置

时间:2015-04-04 04:22:18

标签: django model-view-controller domain-driven-design anemic-domain-model

所以在我的python django应用程序中,架构的结构使得它被分成不同的应用程序。一个users应用,一个用于finance等等。

每个应用都有以下基本结构:

app_name
    models
    services
    tests

我正在开发一项支持促销代码的新功能。促销代码将允许用户获得他们即将到来的账单的折扣。所以我创建了PromoCodeModelPromoCodeService。在服务内部,我需要检查用户是否有资格兑换此代码。看起来这个逻辑可能变得相当复杂,我希望将资格检查封装到自己的类中 - 类似于PromoCodeEligibility(user, promo_code)

我在想 - 这会属于哪里?我应该创建一个新的PromoCodeEligibilityService吗?或者我应该创建一个名为domain的新文件夹并将其设为域对象?我也可以将这个逻辑移到model本身,但是真正胖的模型对我来说似乎更像是一种反模式。想法?

1 个答案:

答案 0 :(得分:0)

  

我也可以将这个逻辑移到模型本身,但确实如此   胖模特对我来说似乎更像是反模式。想法?

实际上这是Django的首选方式。您可以详细了解此herehere以及here

PS。我很确定在django docs中有关于这个主题的几句话,但是找不到它。