ich habe hier das Problem, das ich nach dem Speichern eines Objektes direkt eine Aktion ausführen möchte. Das ist an sich kein Problem, bietet Django dafür doch post_save an. Der folgende Code ist gekürzt:
Code: Alles auswählen
class Task(models.Model):
branches = models.ManyToManyField(Branch,
verbose_name="Abteilung", related_name="crontasks")
def create_due_task(self):
branches = self.branches.all()
def post_save_task(sender, **kwargs):
instance = kwargs["instance"]
instance.create_due_task()
post_save.connect(post_save_task, sender=Task)
Wenn es bereits einmal gespeichert wurde, dann ist branches voll mit den Einträgen vor dem aktuellen Speichern.
Entweder läuft das in zwei verschiedenen Transaktionen, und die sehen sich deshalb gegenseitig nicht, oder Django speichert zuerst Task, führt dann post_save aus und speichert dann die ManyToMany-Objekte. Oder ich habe irgendwo einen kräftigen Denkfehler.