Django - 覆盖模型的保存/删除功能,而不是在视图中执行

els*_*sar 1 python django django-models django-views

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

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

现在我在各自的观点中这样做.我不知道是否会更好地覆盖savedelete模型的功能,做这一切在那里.

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

Bur*_*lid 6

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

另请注意,如果覆盖模型方法,则提供一种"保证",无论ORM如何被访问,您的规则都将被应用.如果只在视图中执行逻辑,那么在其他任何地方; 例如,使用自定义管理命令或django shell,模板标记,甚至在另一个视图中,您的规则可能无法应用.