Это потому, что ваш merchant.__class__
также django.db.models.base.ModelBase
. Если вы просто попытаетесь напечатать торговца, вы получите правильный путь к классу (я получаю app.models.TestModel
), но class - это BaseModel.
Я полагаю, это из-за использования метаклассов. Вероятно, метакласс устанавливает класс объекта в ModelBase. Django широко использует эту функцию Python, и это может вызвать странное поведение (что означает странное для людей, которые не совсем понимают, как я ;-), не то, что это не работает). Я попытаюсь взглянуть на код Django - вы тоже должны: -)
Во всяком случае, вы получаете то, что вы хотите внутри формы, и это должно работать просто отлично: -)
ЧЕРТ ВОЗЬМИ
Конечно, я знаю, почему это происходит. Вы спрашиваете о классе класса, вы знаете. Внутри формы. Meta.model - это класс, который вы передали в форму. Вот почему вы получаете ModelBase - вы получаете метакласс.
Стоит прочитать о метаклассах, потому что они классные. Хотя они тоже немного сложны ;-) Здесь вы можете прочитать о них.