django post_save вызов изнутри отправки модели?

У меня довольно простая модель, которая работает:

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) 

Я знаю, что моя функция create_badge в actions.py работает. Если я отправлю его без значения для отправителя, он говорит, что отправитель является объектом LogEntry. Я хочу / нужно ссылаться на некоторые данные экземпляра в сценарии post_save, как показано ниже:

 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) 

Где я могу позвонить в свой post_save-вызов, чтобы он знал о значке (я предполагаю, что это исправление?

Благодарю.

  • любая идея, как обновить Python PIP на окне окна?
  • Использование приложения планировщика Django с вашими собственными моделями
  • Простая настройка сервера Python
  • Какова цель голой астерикс в аргументах функции?
  • Преобразование Pandas DataFrame в словарь
  • Как получить текущую дату и время от времени отладки GPS в python
  • Как написать git-крючок, чтобы ограничить запись в ветку?
  • Файлы для отдыха для стран G20
  • One Solution collect form web for “django post_save вызов изнутри отправки модели?”

    Просто подключите сигнал с отправителем = Значок после определения значка, пример проверки:

     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) 

    Сеанс тестовой оболочки:

     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 
    Python - лучший язык программирования в мире.