django post_save Anruf von innerhalb senden Modell?
Habe ich ein ziemlich einfaches Modell, das funktioniert:
class Badge(models.Model):
name = models.CharField(max_length=16, help_text="Name for Badge")
category = models.ForeignKey(BadgeCategory, help_text="Category for badge")
description = models.CharField(max_length=32, help_text="A brief description")
file = models.ImageField(upload_to=format_badge_name)
signals.post_save.connect(create_badge, sender=Badge)
Ich weiß, dass meine create_badge Funktion in signals.py funktioniert. Wenn ich senden Sie es, ohne einen Wert für Absender, es sagt, dass der Absender ein LogEntry-Objekt. Ich will/muss einige Referenz der Instanz von Informationen in der post_save Skript wie unten:
def create_badge(sender, instance, created, **kwargs):
from userinfuser.ui_api import UserInfuser
from django.conf import settings
if created:
api_key = settings.API_KEY
api_email = settings.API_EMAIL
ui = UserInfuser(api_email, api_key)
ui.create_badge(instance.category.name, instance.name, instance.description, instance.file.url)
Wo kann ich rufen Sie meine post_save nennen, so ist es bewusst, Abzeichen (ich ' m vorausgesetzt, dies ist der fix?
Dank.
Was ist das problem genau? Ohne Angabe
sender
wie in signals.post_save.connect(create_badge, sender=Badge)
alle model.save()
fordert, würde dazu führen, die create_badge()
genannt zu werdenInformationsquelleAutor jduncan | 2012-05-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur anschließen, das signal mit sender=Abzeichen nach Abzeichen ist definiert, getestet Beispiel:
Test-shell-Sitzung:
Ich bin verwirrt, indem Sie Ihren Wortschatz. Sie nicht call ein signal: entweder connect an einen Empfänger, entweder Strahlen (die call alle angeschlossenen Empfänger). Trotzdem habe ich noch eine getestet/funktioniert beispielsweise auf meine Antwort.
Ich bin mir sicher, dass die Verwirrung ist aus meiner fehlenden formalen Kenntnisse (insbesondere Signale). Wenn ich das signal.post_save.connect-Befehl in der Model-Klasse wird es genannt, aber ich bekomme ein Abhängigkeitsproblem (Abzeichen ist nicht definiert, innerhalb Abzeichen). Das einzige andere Beispiel, ich habe für diese ist im Zusammenhang mit Benutzer-Profilen, und der Absender ist der User-Modell, so dass ich noch nicht ausgeführt haben, in diese, bevor. Wenn ich die Signale.post_save.connect-Befehl außerhalb der Abzeichen Modell scheint es nicht zu sein, genannt zu allen.
Sie waren genau das die ganze Zeit. Ich hatte einen einfachen Fehler in einer variable, die ich lief in den receiver.
InformationsquelleAutor jpic