Вычисление «последнего использованного» отношения django ManyToMany - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть простая модель Tag, с которой многие другие модели имеют отношение ManyToMany. Вышло требование иметь возможность запрашивать / показывать последние использованные теги в системе для всех объектов, имеющих теги.

Я могу добавить атрибут used_at к модели тегов, и я мог бы заказать на это. Но очевидно, что модель Tag не модифицируется, когда что-то еще ссылается на нее, поэтому auto_now для этого атрибута мне не поможет.

Без использования модели through (которая может auto_now_add на нем) и без выполнения каких-либо невидимых (не django) маги c непосредственно в БД с помощью триггеров, есть ли разумный способ обновить метку времени тега при каждом сохранении модели, ссылающейся на него

1 Ответ

0 голосов
/ 21 апреля 2020

Вы можете использовать m2m_changed signal

Из документов:

Отправляется, когда ManyToManyField изменяется на экземпляре модели. Строго говоря, это не модельный сигнал, поскольку он отправляется ManyToManyField, но поскольку он дополняет pre_save / post_save и pre_delete / post_delete, когда дело доходит до отслеживания изменений в моделях, он включается сюда

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