Django on_delete SET_NULL 不起作用

jmt*_*ung 5 django postgresql django-models

我的模型设置如下:

class User
  email = models.EmailField(unique=True)

class Store
  owner = models.ForeignKey(User, null=True, on_delete=models.SET_NULL)
Run Code Online (Sandbox Code Playgroud)

我的期望是,这on_delete=models.SET_NULL意味着如果 aUser被删除,Store则不会被删除。但是,我的测试并未证实这种怀疑(见下文)。有人可以帮助解释我的误解吗?是的,我确实在进行测试之前运行了迁移!

第一个测试测试删除 a 是否Store会导致删除 a 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)
Run Code Online (Sandbox Code Playgroud)

下面的测试测试用户的删除是否会导致商店的删除。此测试中的第二个断言失败。

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)
Run Code Online (Sandbox Code Playgroud)