1

我有一个模型Quote,它有一个用户模型的外键。一个用户可以有 0 到 10 个引号,如果他/她有一个或多个引号,其中一个应该是主引号(primary 是 Quote 模型的一个字段)。

当用户添加报价时,检查用户是否有其他报价,如果没有,则将新报价设置为主报价。并且当删除主引号时,如果用户有任何其他引号,则将另一个引号设置为主引号。

现在我在各自的视图中这样做。我想知道是否最好覆盖模型的savedelete功能并在那里完成所有这些。

那么哪个是模型或视图执行这些任务的正确位置呢?

4

1 回答 1

6

普遍的共识是,厚模型和助手,薄视图。换句话说,你的观点应该尽可能简单;您的模型尽可能丰富,并为外围位提供大量帮助代码。

还要记住,如果您覆盖模型方法,您提供了一种“保证”,即无论如何访问 ORM,您的规则都将被应用。如果您只在视图中执行逻辑,那么在其他任何地方;例如,使用自定义管理命令或 django shell、模板标签,甚至在另一个视图中,您的规则有可能不会被应用。

于 2013-05-07T06:45:42.113 回答