FROM overcoder
От толкания в отладчике и источнике: все модели Django используют метакласс ModelBase, определенный в /db/models/base.py. Для каждого поля в определении класса модели метод ModelBase .add_to_class вызовет метод поля .contribute_to_class.
Field.contribute_to_class определяется в /db/models/fields/__init__.py, и это отвечает за сопоставление определения поля с конкретной моделью. Поле изменяется путем добавления свойства .model и вызова метода .set_attributes_from_name с именем, используемым в определении класса модели. Это, в свою очередь, добавляет свойства .attname и .column и устанавливает .name и .verbose_name при необходимости.
Когда я