当前位置: 首页 > 面试题库 >

Django比较模型实例是否相等

杨甫
2023-03-14
问题内容

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

spam == eggs

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

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

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


问题答案:

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



 类似资料:
  • 如何比较两个javascript集?我尝试使用和但都返回false。 这两个集合是等价的,因为根据定义,集合没有顺序(至少通常没有)。我看了MDN上的集合的留档,没有发现任何有用的东西。有人知道怎么做吗?

  • 两个 NavigableString 或 Tag 对象具有相同的HTML或XML结构时, Beautiful Soup就判断这两个对象相同. 这个例子中, 2个 <b> 标签在 BS 中是相同的, 尽管他们在文档树的不同位置, 但是具有相同的表象: “<b>pizza</b>” markup = "<p>I want <b>pizza</b> and more <b>pizza</b>!</p>"

  • 两个 NavigableString 或 Tag 对象具有相同的HTML或XML结构时, Beautiful Soup就判断这两个对象相同. 这个例子中, 2个 <b> 标签在 BS 中是相同的, 尽管他们在文档树的不同位置, 但是具有相同的表象: “<b>pizza</b>” markup = "<p>I want <b>pizza</b> and more <b>pizza</b>!</p>"

  • 问题内容: 我有上述2个类(POJO),它们都是绝对相同的(除了课程名称),我将它们添加到两个数组列表:aListA和aListB。我需要比较两个对象是否相同。如果它们相同,则需要将它们添加到另一个列表(commonList)中,如果它们恰好是不同的,则需要将它们添加到另一个列表(differentList)中。我写了以下代码: 我的问题是,即使两个不同POJO中的数据(变量,firstId和se

  • 本文向大家介绍JS中比较两个Object数组是否相等方法实例,包括了JS中比较两个Object数组是否相等方法实例的使用技巧和注意事项,需要的朋友参考一下 一、问题 在js中是不能直接用“==”或者“===”来计算两个数组是否相等的,那么就需要对数组的值进行比较; 二、次解决方案 对于比较两个数组次要的方法有如下几种,为什么说是次要解决方案呢?因为它不能真正称之为对两个数组的对比。 1. 把两个数

  • 我做了这个扩展方法来检查一个类型是否实现了一个接口。要使其正常工作,它需要比较两种类型。然而,这种比较似乎并不现实: 这是我比较失败的情况: 正如注释中提到的,如果我比较类型名,那么它总是按照预期工作。我想知道这是怎么回事。