У меня проблема с тем, что объекты были неожиданно удалены и создали минимальный пример. Я не знаю, является ли это ошибкой или совершенной ошибкой.
Модели примерно такие:
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.c перед удалением b1. При удалении b1.c, b1.c имеет значение NULL. Кажется, что тогда все записи A были удалены, где A.related равен NULL.
Это ошибка? Я действительно не ожидал, что все записи всех таблиц, которые имеют нулевую ссылку на модель С., будут удалены.
Я использую Postgres 8.4 и psycopg2 в качестве базы данных БД.
С наилучшими пожеланиями!