有人可以帮我理解Django信号的update_field
参数吗?
update_fields:要在。中明确指定的要更新的字段集 save()方法。如果在save()调用中没有使用此参数,则为None。
我不清楚这意味着什么。我试图用它来阻止信号功能执行,除非某些字段被更新:
@receiver(post_save, sender=SalesRecord)
def spawn_SaleSource_record(sender, update_fields, created, instance, **kwargs):
if created or update_fields is 'sale_item' or 'sales_qty':
*do function*
但是,即使明确更新了未指定的字段,它似乎仍会在保存对象时在另一个信号进程中执行:
x = SalesRecord.objects.filter(paid_off=False, customer=instance.customer).first()
x.paid_off = True
x.save(update_fields=['paid_off'])
我是不是错了?
答案 0 :(得分:12)
您的情况与您想要的情况不符,' sales_qty'总是如此。
您希望自己的条件是:
if created or 'sale_item' in update_fields or 'sales_qty' in update_fields: