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, поскольку не может его найти?