2016-12-11 3 views
0

Ich versuche, einen Identifikator für mein Scheduler-Modell zu erstellen, der von ManyToManyField dieses Modells abhängt.Das Überschreiben der Speichermethode löst eine Ausnahme aus, wenn das Objekt erstellt wird

Das Problem ist, dass, wenn ich save Methode überschreiben, das erste Mal (wenn Objekt erstellt wird) verursacht es Probleme. Es sollte zuerst gespeichert werden. Auf der anderen Seite, wenn ich ein post_save Signal erzeugen, das Problem ist, dass ich zu save das Modell innerhalb dieses Signal haben, die mit 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.

Haben Sie irgendwelche Ideen endet?

Antwort

0

Hm, was ist

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

in Ihrem Signal - und nicht außer Kraft pariert? :)

Verwandte Themen