Найти - Пользователи
Полная версия: сигнал m2m_changed
Начало » Django » сигнал m2m_changed
1
regall
Данный сигнал появился только в Django 1.2. Назрела необходимость использовать его в Django 1.1.
Знает ли кто-нибудь по этому поводу замену, или какой-нибудь workaround.

Задача состоит в том, чтобы выполнять некие телодвижения, когда пользователя включают или выключают из группы.
Ferroman
Переопределить (http://docs.djangoproject.com/en/1.2/topics/db/managers/#using-managers-for-related-object-access) add/remove/clear методы базового менеджера модели с помощью своего.
regall
Это решение приходило в голову. Ну, если мыслей больше нет, придется делать так. Ferroman, спасибо.
vaxXxa
А чем плохо отлавливать сигналы модели Users и когда идет изменение модели - проверять, состоит он в группе или нет?
regall
vaxXxa
А чем плохо отлавливать сигналы модели Users и когда идет изменение модели - проверять, состоит он в группе или нет?
Плохо тем, что обработчик сигнала post_save на User еще не видит, что у пользователя поменялись группы. Для этого и создавался m2m_changed сигнал. К сожалению проект в ближайшее время на 1.2 версию не перейдет, поэтому буду играться с менеджером.
regall
Опишу еще одно частичное решение проблемы. Так как все изменения проделываются через админку, то есть реализация более простая и меньшей кровью.
Спасением в данном случае является метод save_model класса ModelAdmin. То есть, юзера сохраняем, данные новые из объекта мы все равно не получим, но зато у нас есть данные, которые были введены в форму, то есть, по сути, новый набор групп, в которых состоит пользователь. С этим можно уже работать.

Обращаюсь к вам, чтобы узнать, содержим ли такой подход подводные камни?
Ferroman
Какой-то частный “воркераунд”. Если группы можно ещё где-то добавлять (даже в другом месте админки) то проблема.
regall
Ferroman
Какой-то частный “воркераунд”
Согласен
Ferroman
Если группы можно ещё где-то добавлять (даже в другом месте админки) то проблема.
В том-то и дело, что нет.
Ferroman
Добавить новые связи возможно и в коде где-то через add/remove. В каком-нибудь кастомном сейве модели (пользователя, если не в админке, или или редактировании группы). Надо будет отслеживать все такие изменения. Хотя, если изменение состава групп происходит только в одном месте, то нормально, до апгрейда особых проблем не будет создавать, я думаю.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB