2016-12-11 10 views
0

このモデルのManyToManyFieldに依存するスケジューラモデルの識別子を作成しようとしています。オブジェクトの作成時にsaveメソッドをオーバーライドすると例外が発生する

問題は、saveメソッドをオーバーライドすると、初めて(オブジェクトが作成されたとき)問題が発生することです。まず保存する必要があります。私はpost_save信号を作成する一方で、問題は、私はsave

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>" needs to have a value for field "scheduler" before this many-to-many relationship can be used.

は、あなたが任意のアイデアを持っていますかINFIで終わるこの信号の内部モデルを持っているということでしょうか?

答えて

0

フム、どのようなあなたの信号で

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

について - とセーブ上書きしませんか? :)

関連する問題