#django
#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.
Я пробовал использовать user_id вместо user в Field History Tracker, но он всегда возвращает None. Используя user.id или что-нибудь подобное, это просто возвращает ошибку.
Мне действительно нужно сохранить эти данные истории, но не ценой тысяч дополнительных запросов.
Кроме того, мне бы очень понравилось сохранять django-field-history, поскольку ее использует вся моя база данных, но я знаю, что мне, возможно, придется переключить пакет, и если да, то какой бы вы посоветовали?
Ответ №1:
Насколько я понимаю, вы пытаетесь зарегистрировать, какой пользователь обновил, для этого вы должны использовать _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
Всегда будет обновляться, какой пользователь обновил строку для этой таблицы.
Комментарии:
1. Возможно, мой пример был не самым лучшим. Мой пользователь поля — это не тот, кто обновил, а редактируемое поле. Допустим, я перевожу своего автора 1 в пользователя 1, затем переключаю его на пользователя 2, затем обратно на пользователя 3, я хочу видеть все изменения в моем трекере