Django:跟踪模型中的字段是否发生更改

arr*_*rt_ 3 python django django-models

我有一个模型:

class Object(Object1):
    name = models.CharField(max_length=255, blank=True)
    description = models.TextField(blank=True)
    date_updated = models.DateTimeField(blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)

我想跟踪是否有任何内容插入到 date_updated 字段中,然后在另一个模型中创建另一个对象,而不覆盖 save 方法。

例如:

if date_updated:
    MyModel.objects.create(type="D", user=request.user)
Run Code Online (Sandbox Code Playgroud)

虽然我已经尝试过这个,但仍然没有成功。

Ibr*_*tov 8

您可以使用django-model-utilstracker中的字段。

向模型添加跟踪器:

class Object(Model):
    name = models.CharField(max_length=255, blank=True)
    description = models.TextField(blank=True)
    date_updated = models.DateTimeField(blank=True, null=True)

    tracker = FieldTracker()
Run Code Online (Sandbox Code Playgroud)

save()您可以在其他经常更新模型的地方查看或查看:

if object.tracker.has_changed('date_updated'):

    create_new_object(data)
Run Code Online (Sandbox Code Playgroud)