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