2010-05-21 3 views
5

Я работаю над проектом Django, и я хочу отправить сигнал, когда что-то добавляется к связанному набору модели. Например. у нас есть владелец, у которого есть набор коллекций, и каждый раз, когда вызывается метод owner.collectable_set.add(something), мне нужен сигнал вроде collectable_added или что-то в этом роде. Сигналы мне понятны, но я не знаю, какой менеджер (?) Содержит метод «добавить», который я хочу переопределить.Как переопределить метод «добавить» связанного набора в Django

Редактировать для запроса Ксавьера, чтобы предоставить более подробную информацию вы можете легко переопределить save метод а модель, просто определив его и называя «супер- save» поэтому он получает должным образом сохранен с некоторыми дополнительными функциями. Но мне интересно, где переопределить метод add связанного набора.

Простите, я думаю, что я не представил никаких подробностей, но я думаю, должно быть ясно, что я хочу делать даже из первого абзаца.

Редактировать 2:This - метод, который я хочу переопределить. Рекомендуется ли это делать, или вы предлагаете другой способ посылки сигнала?

+0

Ваш вопрос действительно расплывчатый. Если вы можете предоставить псевдокод или попытаться объяснить это лучше, я думаю, что больше людей могут помочь. –

ответ

0

Я думаю, что вы ищете RelatedManager Class.

+0

Спасибо за ответ. Это похоже на решение, но я забыл упомянуть, что имею дело с отношением m2m. Таким образом, в этом случае класс ManyRelatedManager будет расширять или вставлять сигнал. НО это не тривиально расширять этот класс, поскольку он динамически генерируется. Спасибо, в любом случае. Я опубликую решение, которое я нашел, но не проверил. – mamachanko

3

Это решение, которое я нашел, m2m_changed signal. Взял меня довольно немного на поиск и чтение. Кроме того, я выяснил, что нет необходимости расширять класс ManyRelatedManager, что было бы другим вариантом. Но с сигналом m2m_changed я могу полагаться на встроенные функции, которые являются предпочтительным способом большую часть времени.

0

После долгих поисков (благодаря намеком этого Павла), я наткнулся на этот snippet, который помог объяснить m2m_changed реализации в перехватывать не переопределить метод добавления на ManyRelatedManager. Похоже, что менеджер по отношениям «многие ко многим» происходит «на лету», поэтому нет возможности переопределить метод.

 Смежные вопросы

  • Нет связанных вопросов^_^