【发布时间】:2022-01-22 23:22:15
【问题描述】:
我有一个这样的简单模型:
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()
在我在模型中添加该保存方法之前,一切正常。该方法有效,但信号被禁用。你们能帮帮我吗?谢谢
【问题讨论】:
-
只有在
info1不为空时才保存ScientificInfo实例 -
将
super(ScientificInfo, self).save(*args, **kwargs)向左移动一个标签。
标签: django