Почему Django хочет изменить таблицу с моделью прокси? - PullRequest
0 голосов
/ 31 октября 2018

Я использую 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'

Так что не работает: (

...