2016-10-24 1 views
0

ProblemAufschalten Modell Anfrage senden zusammen mit post_save speichern

Django Modelle das Signal post_save senden, wenn ein Modell gespeichert wird. Die post_save hat jedoch keinen Zugriff auf das Anfrageobjekt. Ich muss auf Variablen wie request.user zugreifen und es mit dem Signal senden.

Mögliche Lösungen

  • Admin - Aufschalten Admin save_modelpost_save mit einigen zusätzlichen Parameter aus dem Request-Objekt zu senden.

  • DRF-API - Nachdem ein Modell erstellt oder aktualisiert wurde, senden Sie post_save erneut mit Parametern aus dem Anforderungsobjekt.

Frage

sowohl in den oben genannten Fällen die post_save standardmäßig model.save() sendet. Wie kann ich save überschreiben, um entweder ein benutzerdefiniertes Signal zu senden oder post_save mit request.user erneut zu senden. Wie soll das gemacht werden?

+0

Sind Sie sicher, dass Sie ein 'post_save' Signal wollen? Wenn Sie auf "Anforderung" zugreifen müssen, sollten Sie wahrscheinlich ein benutzerdefiniertes Signal definieren und es manuell in der Ansicht aufrufen. –

+0

@ НазарТопольський Ich wollte 'post_save' verwenden, weil es das Standardsignal ist. Aber ich bin offen für jede andere praktikable Lösung. – Ajoy

Antwort

0

Sie können auf das Benutzerobjekt auf diese Weise auf dem Modell Benutzer:

from django.contrib.auth.models import User 

# post save for creating customer on user saving 
def post_save_function(sender, instance, created, **kwargs): 

    # create customer instance 
    if created: 



post_save.connect(post_save_function, sender=User) 

Sie

in der instance Variable Zugriff auf die User haben
+0

Ich denke du hast meine Frage nicht verstanden. – Ajoy

+0

Alle Django-Modelle geben 'post_save' Signale aus. Ich möchte diese Signale über die DRF-API oder den Django-Administrator senden (erneut senden), aber mit einem zusätzlichen Parameter "request.user". – Ajoy

Verwandte Themen