Django signals created kwargs is True while updating

16 views
Skip to first unread message

Aamu Padi

unread,
Jul 24, 2018, 2:50:52 PM7/24/18
to django...@googlegroups.com
I think I am missing something here, but here it goes. I have a model, and it is a sender for a post_save signal.

class Book(models.Model):
    ...
    created_at = models.DateTimeField(default=timezone.now)
    bought = models.BooleanField(default=False)

@receiver(post_save, sender=Book)
def create_sold_log(sender, instance, **kwargs):
    if kwargs['created'] and instance.bought:
        print('created and instance.bought')
        print('k* created', kwargs['created'])

    elif kwargs['created']:
        print('created only')
        print('k* created', kwargs['created'])
    else:
        print('else...')

Now everytime a book object is saved, the above signal will fire.

So from the below data, after the serializer is saved while the Bought is True, the kwargs['created'] is True.

data = {
    "...": "...",
    "bought": True
}

serializer = CustomSerializer(data=data)
if serializer.is_valid():
    serializer.save()

And suppose, from the below data, if the bought=False and I save the serializer, then also kwargs['created'] is True.

data = {
    "...": "...",
    "bought": False
}

serializer = CustomSerializer(data=data)
if serializer.is_valid():
    serializer.save()

But, suppose, later if I update the book object to Bought=True and save it, the kwargs['created'] is still True.

book.bought = True
book.save()

What am I missing here? Can someone please help me understand. Thank you
Reply all
Reply to author
Forward
0 new messages