覆盖save方法会在创建对象时引发异常

时间:2016-12-11 21:05:26

标签: python django django-models django-signals

我正在尝试为我的Scheduler模型创建一个识别器,它依赖于此模型的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>"在使用多对多关系之前需要为字段“scheduler”设置一个值。

你有什么想法吗?

1 个答案:

答案 0 :(得分:0)

嗯,怎么样

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

- 并且不要覆盖保存? :)