【问题标题】:Overriding save method raises exception when object is created创建对象时覆盖保存方法会引发异常
【发布时间】:2017-04-26 17:53:37
【问题描述】:

我正在尝试为我的调度程序模型创建一个标识符,该标识符取决于此模型的ManyToManyField

问题是当我覆盖save 方法时,第一次(创建对象时)会导致问题。应该先保存。另一方面,当我创建post_save 信号时,问题是我必须save 这个信号内的模型以 infi 结尾

class Scheduler(models.Model):
    weekhours = models.ManyToManyField('WeekHour', related_name='schedulers')
    identificator = models.TextField(null=True,blank=True)

    def save(self,*args,**kwargs):
        if self.weekhours.all():
            identificator = ','.join([str(x.hour) for x in self.weekhours.all().order_by('hour')])
            self.identificator = identificator
        super(Scheduler, self).save(*args, **kwargs)

ValueError:"<Scheduler: None>" 需要为字段“调度程序”设置一个值,然后才能使用这种多对多关系。

你有什么想法吗?

【问题讨论】:

    标签: python django django-models django-signals


    【解决方案1】:

    嗯,怎么样

    # some logic here (count the identificator)
    objects.filter(id=my_id).update(identificator=identificator)
    

    在您的信号中 - 并且不覆盖保存? :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-09
      • 2023-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多