我有一个模型 Quote,它有一个指向用户模型的外键。一个用户可以有 0 到 10 个报价,如果他/她有一个或多个报价,其中一个应该是主要报价(主要是报价模型的一个字段)。
当用户添加报价时,会检查用户是否有其他报价,如果没有,则将新报价设为主要报价。当主要引述被删除时,另一个引述被设置为主引述,如果用户有任何其他引述。
现在我在各自的 View 中执行此操作。我想知道覆盖模型的 save 和 delete 函数并在那里完成所有这些是否会更好。
那么执行这些任务的正确位置是模型还是 View ?
请您参考如下方法:
普遍的共识是,厚模型和助手,薄 View 。换句话说,你的观点应该尽可能简单;您的模型尽可能丰富,并为外围位提供大量帮助代码。
另请记住,如果您覆盖模型方法,则您提供了一种“保证”,即无论以何种方式访问 ORM,您的规则都将得到应用。如果您只在 View 中执行逻辑,那么在其他任何地方;例如,使用自定义管理命令或 django shell、模板标签,甚至在另一个 View 中,您的规则有可能不会被应用。
