Django on_delete SET_NULL无效

时间:2018-05-30 18:15:27

标签: django postgresql django-models

我的模型设置如下:

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)

0 个答案:

没有答案