我的模型设置如下:
class User
email = models.EmailField(unique=True)
class Store
owner = models.ForeignKey(User, null=True, on_delete=models.SET_NULL)
我的期望是on_delete=models.SET_NULL
表示如果删除User
,则不会删除Store
。但是,我的测试并没有证实这种怀疑(见下文)。有人可以帮我解释一下我的误会吗?是的,我在进行测试之前确实进行了迁移!
第一个测试测试删除Store
是否导致删除User
,这不应该是这种情况。该测试按预期通过。
def test_delete_store(self):
self.store.delete()
with self.assertRaises(Store.DoesNotExist):
Store.objects.get(pk=self.store.pk)
self.assertEqual(User.objects.get(pk=self.user.pk), self.user)
以下测试测试删除用户是否导致删除商店。第二个断言在此测试失败。
def test_delete_user_deletes_store(self):
self.user.delete()
with self.assertRaises(User.DoesNotExist):
User.objects.get(pk=self.user.pk)
# Check that store is not deleted (this unexpectedly raises a DoesNotExist error)
self.assertEqual(Store.objects.get(pk=self.store.pk), self.store)