У меня следующая структура моделей:
class Parent(models.Model):
fieldA = models.TextField()
fieldB = models.TextField()
class Child(Parent):
fieldC = models.CharField()
Я заметил неожиданное поведение в следующем фрагменте кода:
child = Child(fieldA = 'Text fieldA', fieldB = 'Text fieldB', fieldC = 'Text fieldC')
child.full_clean()
child.save()
self.assertEqual(Child.objects.count(), 1)
child.delete()
self.assertEqual(Child.objects.count(), 0)
child.full_clean()
child.save()
Не понимаю, почему я добавляю второе child.save()
, утверждения передаются, но когда я хочу сохранить его с этой второй ошибкой, происходит сбой с ValueError
:
ValueError: save () запрещен для предотвращения потери данных из-за несохраненного связанного объекта parent_ptr '
В то же время я не вижу такой ошибки со следующим кодом:
parent = Parent(fieldA = 'Text fieldA', fieldB = 'Text fieldB')
parent.full_clean()
parent.save()
self.assertEqual(Parent.objects.count(), 1)
parent.delete()
self.assertEqual(Parent.objects.count(), 0)
parent.full_clean()
parent.save()
Почему это происходит? Может кто-нибудь сказать мне, как я должен исправить первый фрагмент?