Подтвердить что ты не робот

Объяснение Contrib_to_class

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

Строка кода, с которой я столкнулся, такова:

MyGenericRelation().contribute_to_class(model, 'field_name')

Результат этого кода - это поле с именем "field_name" добавляется в "модель", и из того, что я собираю, объекты внутри поля являются списком типа X (часть MyGenericRelation).

Мне интересно, может ли кто-нибудь объяснить, как это работает.

Как и в, почему я получаю список объектов X, прикрепленных к "field_name", и если это должно быть общие отношения до Contrib_to_class или будет использовать фактический тип модели, скажем "Y", просто дайте мне список Y-х.

Честно говоря, меня больше интересует влияние и функциональность метода contrib_to_class.

4b9b3361

Ответ 1

В принципе, для объектов, которые имеют метод contribute_to_class, при добавлении их в класс модели мы вызываем contribute_to_class вместо setattr: это позволяет объектам делать дополнительный учет и/или модификацию класса как они добавлены. У Alex Gaynor есть хорошее объяснение здесь: http://lazypython.blogspot.com/2008/11/django-models-digging-little-deeper.html