Django ForeignKey on_delete = SET_NULL 不工作

Django ForeignKey on_delete = SET_NULL not working

我正在为多个对象模型编写测试,但以下测试未给出预期结果:

def test_image_on_delete(self):
    image = Image(id=self.TEST_IMAGE_ID, name=self.TEST_IMAGE_NAME, src=self.TEST_IMAGE_SRC)
    image.save()
    category = Category.objects.get(id=self.TEST_ID)
    category.image = Image.objects.get(id=self.TEST_IMAGE_ID)
    Image.objects.get(id=self.TEST_IMAGE_ID).delete()
    self.assertIsNone(category.image)

这是类别中的图像字段:

image = ForeignKey(Image, on_delete=SET_NULL, null=True)

我已确认图像正在被删除,但 assertIsNone 失败,因为类别的图像字段未被清除。

我写这个测试的方式或 ForeignKey 字段有问题吗?

注意:我正在使用来自 django.test

的 TestCase

我想通了这个问题。 on_delete 修改了我的 Category 对象的 SAVED 版本,所以我在本地的变量副本没有改变。

这是我修改后通过的测试:

def test_image_on_delete(self):
    image = Image(id=self.TEST_IMAGE_ID, name=self.TEST_IMAGE_NAME, src=self.TEST_IMAGE_SRC)
    image.save()
    category = Category.objects.get(id=self.TEST_ID)
    category.image = Image.objects.get(id=self.TEST_IMAGE_ID)
    self.assertIsNotNone(category.image)
    category.save()
    Image.objects.get(id=self.TEST_IMAGE_ID).delete()
    category = Category.objects.get(id=self.TEST_ID)
    self.assertIsNone(category.image)