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