【问题标题】:Django Signals: using update_field as conditionDjango 信号:使用 update_field 作为条件
【发布时间】:2015-10-08 09:31:20
【问题描述】:

有人可以帮我理解 Django 信号的 update_field 参数吗?

According to the docs:

update_fields:在 保存()方法。如果在 save() 调用中未使用此参数,则为无。

我不清楚这意味着什么。我试图用它来阻止信号函数执行,除非某些字段被更新:

@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'])

我是不是搞错了?

【问题讨论】:

    标签: python django django-models django-signals


    【解决方案1】:

    您的条件与您想要的不符,因为“sales_qty”始终为真。

    你希望你的条件是:

    if created or 'sale_item' in update_fields or 'sales_qty' in update_fields:
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-21
    • 2015-01-22
    • 2016-12-26
    • 1970-01-01
    • 1970-01-01
    • 2011-09-03
    • 2020-06-26
    相关资源
    最近更新 更多