2016-12-11 2 views
0

J'essaie de créer un identificateur pour mon modèle de planificateur qui dépend de ManyToManyField de ce modèle.La méthode de sauvegarde prioritaire déclenche une exception lorsque l'objet est créé

Le problème est que lorsque je remplace la méthode save, la première fois (lorsque l'objet est créé) il provoque des problèmes. Il devrait être sauvegardé en premier. le problème est que j'ai d'autre part lorsque je crée un signal post_save, à l'intérieur du modèle save ce signal qui se termine par 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>" needs to have a value for field "scheduler" before this many-to-many relationship can be used.

Avez-vous des idées?

Répondre

0

Hm, qu'en est-

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

dans votre signal - et ne pas remplacer la sauvegarde? :)