如何解决Django 外键 on_delete = SET_NULL 不起作用
我正在为多个对象模型编写测试,但以下测试未给出预期结果:
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 失败,因为类别的图像字段没有被清除。
我编写此测试或外键字段的方式有问题吗?
注意:我正在使用 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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。