【发布时间】:2010-09-20 10:07:43
【问题描述】:
我遇到了对象被意外删除并创建了一个最小示例的问题。不知道是bug还是思维错误。
模型是这样的:
class A(models.Model):
related = models.ForeignKey('C', blank = True, null = True)
class B(models.Model):
title = models.CharField(max_length = 255, blank = True, null = True)
class C(models.Model):
b = models.OneToOneField('B', blank = True, null = True, related_name = 'c')
这是测试用例:
a1 = A()
a1.save()
b1= B()
b1.save()
c1 = C()
c1.b = b1
c1.save()
b1 = B.objects.all()[0]
b1.c.delete()
b1.delete()
self.failUnlessEqual(A.objects.count(),1)
我在删除 b1 之前明确删除了 b1.c。删除 b1.c 时,b1.c 为 NULL。似乎 A 的所有条目都被删除了,其中 A.related 为 NULL。
这是一个错误吗?我真的没想到所有对模型 C 有 NULL 引用的表的所有条目都被删除了。
我使用 Postgres 8.4 和 psycopg2 作为数据库后端。
最好的问候!
【问题讨论】:
标签: python django postgresql django-models