/ / Rufen Sie post_save auf, nachdem viele bis viele Felder in der Datenbank gespeichert wurden - Django, Django-Modelle, Django-Signale

Rufen Sie post_save auf, nachdem viele bis viele Felder in der Datenbank gespeichert wurden - django, django-models, django-signals

Ich habe modell

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

Und Post-Save-Signal

@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

Ich möchte alle aktualisierten Werte der beiden m2m-Felder im Post-Save-Signal. Das Problem hierbei ist jedoch, dass das Signal nach dem Speichern aufgerufen wird, bevor m2m-Felder in db gespeichert werden.

Ich hätte das Signal m2m_changed verwenden können, aber es gibt zwei m2m-Felder, und ich kann diese beiden Signale nicht zuordnen oder verknüpfen

Gibt es sowieso die Möglichkeit, post_save aufzurufen, sobald alle m2m-Felder im Modell in db gespeichert sind?

Antworten:

0 für die Antwort № 1

Zwei möglichkeiten:

  • versuche post_save an UserType
  • Versuchen Sie, die Zwischentabelle mit zu benennen through, mögen through="UserPermissionType" und probiere post_save an UserPermissionType

Ich hoffe, ich habe Ihnen genug Hinweise gegeben, um die Lösung zu finden.