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 werden

InformationsquelleAutor jduncan | 2012-05-30

Schreibe einen Kommentar