如何将外键添加到Django字段历史记录?

时间:2019-04-01 12:07:16

标签: django

我正在尝试使用django-field-history跟踪外键,但是当我添加它时,它会使用模型在每个页面上进行其他查询

例如

from field_history.tracker import FieldHistoryTracker

class Author(models.Model):
    user = models.ForeignKey('auth.user)
    field_history = FieldHistoryTracker(['user'])

将始终使用Author在网页上提供更多查询,

SELECT ••• FROM "auth_user" WHERE "auth_user"."id" = '2'
  1239 similar queries.   Duplicated 1235 times.

我尝试在Field History Tracker中使用user_id而不是user,但是它将始终返回None。使用user.id或类似的东西只会返回错误。

我确实需要保留该历史记录数据,但不必以成千上万的额外查询为代价。

此外,在整个数据库正在使用django-field-history的同时,我真的很乐意保留它,但是我知道我可能不得不切换软件包,如果这样的话,您会建议哪一个?

1 个答案:

答案 0 :(得分:0)

据我所知,您正在尝试记录哪个用户已更新,为此,您应按照documentation中所述使用_field_history_user。 例如:

class Pizza(models.Model):
    name = models.CharField(max_length=255)
    updated_by = models.ForeignKey('auth.User')

    field_history = FieldHistoryTracker(['name'])

    @property
    def _field_history_user(self):
        return self.updated_by

它将始终更新哪个用户更新了该表的行。