Django signal не работает после добавления функции сохранения

У меня есть простая модель, например, такая:

class ScientificInfo(models.Model):
    id = models.AutoField(primary_key=True)
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    info1 = models.CharField(max_length=64, choices=SURVEY_CHOICES, blank=True)
    info2 = models.CharField(max_length=64, choices=SURVEY_CHOICES, blank=True)
    info3 = models.CharField(max_length=64, choices=SURVEY_CHOICES, blank=True)
    is_interviewed = models.BooleanField(default=False)

    def save(self, *args, **kwargs):
        if self.info1:
            self.is_interviewed = 'True'
            super(ScientificInfo, self).save(*args, **kwargs)

Каждый раз, когда пользователь добавляется в приложение, для него будет создан объект ScientificInfo с помощью этого сигнала:

@receiver(post_save, sender=User, dispatch_uid='save_new_user_survey')
def survey_create(sender, instance, created, **kwargs):
    user = instance
    if created:
        survey = ScientificInfo(user=user)
        survey.save()

все работало нормально, пока я не добавил метод сохранения внутри моей модели. метод работает, но сигнал отключен. Не могли бы вы мне помочь? Спасибо

Я абсолютно уверен, что следующее вообще не может работать:

        survey = ScientificInfo(user=user)
        survey.save()

Поля info1, info2, info3 не имеют значений default и также не являются null=True. Таким образом, анкета с этими пустыми полями не может быть сохранена в БД, пока вы не заполните их.

Я не уверен, что это ваша проблема, но если вам нужно исправить ее (я считаю, что нужно), вы должны добавить null=True к этим 3 полям.

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