更新时,Django发出的创建kwarg的信号为真

时间:2018-07-24 18:22:48

标签: django

我想我在这里错过了一些东西,但是在这里。我有一个模型,它是post_save信号的发送者。

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...')

现在每次保存书本对象时,都会触发上述信号。

因此,根据以下数据,在“购买”为True的情况下保存序列化程序之后,kwargs['created']为True。

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

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

从下面的数据中假设,如果bought=False和我保存了序列化程序,则kwargs['created']为True。

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

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

但是,假设,稍后,如果我将book对象更新为Bought = True并将其保存,则kwargs['created']仍为True。

book.bought = True
book.save()

我在这里想念什么?有人可以帮我理解。谢谢

0 个答案:

没有答案