让我们说我有一个CustomerProfile
模型
class CustomerProfile(models.Model):
billing_profile = models.ForeignKey(...)
当我在两个未保存的对象上运行assertEqual
时,它会引发AssertionError
self.assertEqual(
CustomerProfile(billing_profile=default_profile),
CustomerProfile(billing_profile=default_profile)
)
给出以下错误:
AssertionError: <CustomerProfile: Full Charge None> != <CustomerProfile: Full Charge None>
我不明白为什么,因为实例ID由于未保存而不会被填充。
答案 0 :(得分:2)
assertEqual
中没有用于比较Django模型的特殊支持。
除非已保存模型(即具有主键),否则将they are comparing by identity(CPython:memory location)保存,即使每个字段都相同,对于两个单独的未保存模型实例,该值也总是不同的。 / p>
要基于内容比较未保存的模型实例,您需要手动检查所有相关字段中的数据是否相等。第三方testfixtures
为此提供了一个帮助程序:请参见django_compare
。