django post_save call from within sending Model?

前端 未结 1 1672
太阳男子
太阳男子 2020-12-19 17:04

I have a pretty simple model that works:

class Badge(models.Model):

    name = models.CharField(max_length=16, help_text=\"Name for Badge\")
    category =          


        
相关标签:
1条回答
  • 2020-12-19 17:13

    Just connect the signal with sender=Badge after Badge is defined, tested example:

    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)
    

    Test shell session:

    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
    
    0 讨论(0)
提交回复
热议问题