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)
我正在为多个对象模型编写测试,但以下测试未给出预期结果:
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)