Django бросает Unique constraint failed IntegrityError с OneToOneField. Почему?

У меня есть две модели, CaracteristiquesGenerales и DataBetweenViews.

class CaracteristiquesGenerales(models.Model):
    utilisateur = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    # some other fields ... (no field relating to another model)

class DataBetweenViews(models.Model):
    caracteristiques_generales = models.OneToOneField(CaracteristiquesGenerales,on_delete=models.CASCADE)
    # some other fields ... (no field relating to another model)

У меня есть сигнал post_save.

@receiver(post_save, sender=CaracteristiquesGenerales)
def etape_1_ok(sender, instance, *args, **kwargs):
    data_between_views, created = DataBetweenViews.objects.get_or_create(caracteristiques_generales=instance)
    data_between_views.etape_1 = True
    data_between_views.save()

Из-за сигнала Django бросает django.db.utils.IntegrityError: UNIQUE constraint failed: general_databetweenviews.caracteristiques_generales_id.

Я также пробовал это :

@receiver(post_save, sender=CaracteristiquesGenerales)
def etape_1_ok(sender, instance, *args, **kwargs):
    try:
        data_between_views = DataBetweenViews.objects.get(caracteristiques_generales=instance)
        data_between_views.etape_1 = True
        data_between_views.save()
    except DataBetweenViews.DoesNotExist:
        data_between_views = DataBetweenViews.objects.create(caracteristiques_generales=instance)
        data_between_views.etape_1 = True
        data_between_views.save()

Почему Django не может создать новый объект DataBetweenViews, поскольку не может его найти?

Вернуться на верх