据我所知,在单例情况下,您可以执行以下操作:
spam == eggs
and if spam
and eggs
是具有所有相同属性值的同一类的实例,它将返回True
。在 Django 模型中,这是很自然的,因为模型的两个单独实例永远不会相同,除非它们具有相同的.pk
value.
这样做的问题是,如果对实例的引用具有已由中间件在途中某处更新的属性,并且尚未保存,并且您尝试将其引用到另一个包含对该实例的实例的引用的变量相同型号,会返回False
当然,因为它们的某些属性具有不同的值。显然,我不需要类似的东西单例 https://stackoverflow.com/questions/31875/,但我想知道是否有一些官方的 Djangonic(哈,一个新词)方法来检查这一点,或者我是否应该简单地检查.pk
值是相同的,通过运行:
spam.pk == eggs.pk
如果这是浪费时间,我很抱歉,但似乎可能有一种方法可以做到这一点,而且我错过了一些东西,如果我找不到它,我会后悔的。
更新(2015 年 2 月 27 日)
您应该忽略这个问题的第一部分,因为您不应该将单例与==
,而是与is
。单例确实与这个问题无关。
From Django 文档 https://docs.djangoproject.com/en/stable/topics/db/queries/#comparing-objects:
要比较两个模型实例,只需使用标准的 Python 比较运算符,即双等号:==
。在幕后,比较两个模型的主键值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)