一尘不染

Django比较模型实例是否相等

django

我了解在单例情况下,你可以执行以下操作:

spam == eggs

如果spameggs是具有所有相同属性值的同一类的实例,则它将返回True。在Django模型中,这是很自然的,因为除非有相同的.pk值,否则模型的两个单独的实例将永远不会相同。

这样做的问题是,如果对实例的引用具有中间件在途中某处已更新的属性,并且尚未保存,那么你正尝试将其保存到另一个变量,该变量持有对实例的引用。相同的模型,False当然会返回,因为它们对某些属性具有不同的值。显然,我不需要诸如singleton之类的东西,但是我想知道是否存在某种官方的Djangonic方法(ha,一个新词)来检查此内容,或者我是否应该.pk通过运行以下命令简单地检查该值是否相同:

spam.pk == eggs.pk
很抱歉,这是浪费时间,但是似乎可能有一种方法可以做到这一点,而我却错过了一些东西,如果找不到它,我会后悔的。


阅读 320

收藏
2020-03-31

共1个答案

一尘不染

要比较两个模型实例,只需使用标准的Python比较运算符,即双等于号:==。在幕后,比较两个模型的主键值。

2020-03-31