¿Django post_save llama desde dentro de enviar modelo?

Tengo un modelo bastante simple que funciona:

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) 

Sé que mi función create_badge en signal.py funciona. Si lo envío sin un valor para el remitente, dice que el remitente es un objeto LogEntry. Quiero / necesito hacer referencia a parte de la información de la instancia en el script post_save como se muestra a continuación:

 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) 

¿Dónde puedo llamar a mi llamada post_save para que esté al tanto de la Insignia (supongo que esta es la solución?

Gracias.

Simplemente conecte la señal con el remitente = Insignia después de que se haya definido la Insignia, ejemplo probado:

 from django.db import models from django.db.models import signals def create_badge(sender, instance, created, **kwargs): print "Post save emited for", instance class BadgeCategory(models.Model): name = models.CharField(max_length=100) 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") signals.post_save.connect(create_badge, sender=Badge) 

Sesión de prueba de shell:

 In [1]: category = BadgeCategory(name='foo') In [2]: category.save() In [3]: badge = Badge(category=category, name='bar', description='test badge') In [4]: badge.save() Post save emited for Badge object