注:django的新手。用它来做我的项目。因此,我当然缺乏很多理解,答案可能是微不足道的。
我有一个ManyToMany关系。我很难提出一个类比,但在“主要”方面,我们有一个包含一个或多个项目的容器。在我看来,这些项目不是“真实的”事物,而是更像是“模板”,并且模板是唯一的。这就是背景。
业务规则是,仅在容器端发生更改,并在容器端启动更改。因此,表单显示了一个容器及其物品。用户可以更改其中一项。如果容器中的某个项目发生更改,则该项目实例(数据库中的行)一定不能更改,如上所述,它是许多其他容器中使用的模板。因此,逻辑上必须是:如果用户更改了一项,则如果已经存在则进行查找,如果是,则进行查找,而不是更新当前项,而是重新使用现有项。如果不存在,请创建一个新的并使用它。但是在任何情况下都不应更改现有的。
我如何以及在何处(在哪个级别)实现这一目标?我真的很想将此保留在模型本身之外(因此不覆盖模型的save方法),但可以在某种类型的服务类中进行。
不是一个真正的答案,但是在模型save()
方法中django的工作方式似乎是正确的选择。