/ / Appelez post_save après que de nombreux à plusieurs champs soient enregistrés dans la base de données - django, django-models, django-signaux

Appelez post_save après que plusieurs champs aient été enregistrés dans la base de données - Django, Modèles Django, Signaux Django

J'ai modèle

class UserPermission(models.Model):
user = models.OneToOneField(User)
user_type = models.ManyToManyField(UserType)
persona = models.ManyToManyField(Persona)

Et après le signal de sauvegarde

@receiver(post_save, sender=UserPermission)
def post_save_user_permissions(sender, instance, **kwargs)
"""
Depending on selected UserType and Persona for a user, Update some other model
"""
pass

Je veux toutes les valeurs mises à jour des deux champs m2m dans le signal post-sauvegarde. mais le problème ici est que le signal post save est appelé avant que les champs m2m ne soient enregistrés dans la base de données.

J'aurais pu utiliser le signal m2m_changed, mais il y a deux champs m2m et je ne peux pas associer ou lier ces deux signaux

Est-il possible d'appeler post_save une fois que tous les champs m2m du modèle sont enregistrés dans db.

Réponses:

0 pour la réponse № 1

Deux possibilités:

  • essayez post_save sur UserType
  • essayez de nommer la table intermédiaire en utilisant through, comme through="UserPermissionType" et essayez post_save sur UserPermissionType

J'espère vous avoir donné suffisamment d'indices pour trouver la solution.