Я использую Django 1.8, Python 2.7.15. Младший разработчик
Я создал модель Test со множеством полей для модели Django Group:
class Test(models.Model):
group = models.ManyToManyField(Group)
Я сделал миграцию, мой проект работал, все было хорошо.
Теперь мне нужно было создать прокси-модель группы с конкретными менеджерами:
class ExtendedGroup(Group):
get_all = AllGroupsManager()
objects = DefaultGroupManager()
class Meta:
proxy = True
И мне пришлось изменить поле группы моей тестовой модели (есть методы, которые должны использовать новых менеджеров ... поэтому я должен использовать ExtendedGroup):
Я меняю отношение ManyToManyField с группы на расширенную группу.
class Test(models.Model):
group = models.ManyToManyField(ExtendedGroup)
ExtendedGroup - модель прокси, поэтому я думаю, что поле группы Test должно быть связано с группой, даже если я использую ExtendedGroup (потому что это модель прокси).
Но когда я запускаю сервер, я получаю ProgrammingError:
столбец test_test_group.extendedgroup_id не существует
Когда я "делаю миграцию", я вижу, что Django хочет изменить поле группы с новым отношением к модели (ExtendedGroup), которое фактически не имеет таблиц в базе данных, потому что это прокси-модель.
operations = [
migrations.AlterField(
model_name='test',
name='group',
field=models.ManyToManyField(to='mainpage.ExtendedGroup'),
),
]
Что здесь происходит? Это правильно? Почему Django хочет создать отношение к модели, у которой нет таблиц?
Я просто не понимаю этого.
Буду признателен за любую помощь!
EDIT:
Когда я запускаю миграцию (миграция), я получаю кучу ошибок:
AttributeError: у объекта ManyToManyField нет атрибута
'M2m_reverse_field_name'
Так что не работает: (