Как добавить иностранные ключи в историю полей Django? - PullRequest
0 голосов
/ 01 апреля 2019

Я пытаюсь отслеживать внешние ключи, используя django-field-history, но когда я добавляю его, он выполняет дополнительные запросы на каждой странице, используя модель

Например

from field_history.tracker import FieldHistoryTracker

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

всегда будет давать больше запросов на страницах, используя автора, например,

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

Я пытался использовать user_id вместо user в Field History Tracker, но он всегда будет возвращать None. Использование user.id или чего-либо подобного просто возвращает ошибку.

Мне действительно нужно хранить данные истории, но не за счет тысяч дополнительных запросов.

Кроме того, мне бы очень хотелось хранить историю django-field, поскольку вся моя БД использует ее, но я знаю, что мне, возможно, придется переключить пакет, и если да, то какой из них вы бы посоветовали?

1 Ответ

0 голосов
/ 01 апреля 2019

Насколько я понимаю, вы пытаетесь записать, какой пользователь обновил, для этого вы должны использовать _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

Всегда обновляется, какой пользователь обновил строку для этой таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...