什么样的方法应该是模型类的方法?

Pio*_*edz 5 python django

这是设计问题.

让我们假设我们在Django中有这种模型:

class Payment(models.Model):
  purchase = ForeignKeyField(Purchase)
  net_price = DecimalField()
  is_accepted = BooleanField()

  def set_accept(self):
    # there will be some logic, which touch purchase, send emails etc.

  def price_with_tax(self):
    return net_price * (1. + TAX)
Run Code Online (Sandbox Code Playgroud)

我们还有另一个名为actions.py的文件,我们在那里执行其他操作.我们的问题是要确定哪种方法应该放在models.py,这在actions.py.你知道任何常见的方法,指南或类似的东西吗?我想尽可能多地使用现有的解决方案.

谢谢

rde*_*ges 6

MVC框架(如Django)中的总体约定是将尽可能多的逻辑放入模型中.这有很多用途:

  • 它将您的逻辑与您的数据绑定(好事).
  • 使代码中的一个位置可以轻松查找所有数据操作方法.
  • 允许您直接在模型上运行方法,而无需依赖视图(使测试更简单).
  • 为您提供在模板中使用的非常"干净"的API,例如:{{ object.price_with_tax }},而不是为不同的行为呈现不同的视图.

对于您的项目布局,您应该尝试在models.py文件中保留任何适用于模型的代码,并尽量避免使用actions.pyhelpers.py除非您确实需要它.如果你确实有大量的代码不适合放入models.py(也许你正在实现算法或其他东西),那么惯例是使用a helpers.py.

你可以在以后做更多的事情来保持你的应用程序层次结构清洁和有条理,但这是它的基本要点.