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 полям.