【问题标题】:Override Django queryset update method覆盖 Django 查询集更新方法
【发布时间】:2020-06-14 21:28:29
【问题描述】:

我想覆盖 Django Queryset Update 方法,以在另一个表中记录模型更改。我已经覆盖了该方法,但无法找到将要更新的行的 ID .我正在获取从 kwargs 更改的字段 我正在使用 Django v1.9.5。 我浏览了 django-simple-historydjango-reversion 的文档,但他们没有记录 update 方法的更改。 p>

class PollQuerySet(QuerySet):
    def update(self, *args, **kwargs):
        # save data into other table whose schema is 
        #(model_name,field_name,model_pk_id,old_value,new_value)

        super().update(*args, **kwargs)

class ModelWithCustomManager(models.Model):
    objects = PollQuerySet.as_manager()

    class Meta:
        abstract = True

【问题讨论】:

    标签: django django-models overriding audit-logging django-simple-history


    【解决方案1】:

    您可能希望查看signals,而不是覆盖update 方法。在pre-savepost-save 上,您可以从模型中获取数据并将其保存到日志表中。

    【讨论】:

    • QuerySet 的update 方法没有发出任何信号。
    • UPDATE 方法没有发出任何信号....这就是为什么我要覆盖它。
    猜你喜欢
    • 2017-07-09
    • 2011-08-17
    • 1970-01-01
    • 2015-12-25
    • 1970-01-01
    • 2017-08-12
    • 2011-06-18
    • 2012-09-03
    • 2019-05-04
    相关资源
    最近更新 更多