我正在使用Django 1.8,Python 2.7.15。初级开发人员
我创建了一个模型测试,该模型具有对Django Group模型的多对多字段:
class Test(models.Model):
group = models.ManyToManyField(Group)
我已经进行了迁移,我的项目正在运行,一切都很好。
现在,我必须与专门的经理一起创建Group的代理模型:
class ExtendedGroup(Group):
get_all = AllGroupsManager()
objects = DefaultGroupManager()
class Meta:
proxy = True
我必须更改我的“测试模型”组字段(它的方法必须使用新的管理器...因此我必须使用ExtendedGroup): 我正在将ManyToManyField关系从Group更改为ExtendedGroup。
class Test(models.Model):
group = models.ManyToManyField(ExtendedGroup)
ExtendedGroup是代理模型,因此即使我使用ExtendedGroup(因为它是代理模型),我认为Test的group字段也应与Group相关。
但是当我运行服务器时,出现了ProgrammingError:
列test_test_group.extendedgroup_id不存在
当我进行“ makemigrations”操作时,我可以看到Django希望更改与模型(ExtendedGroup)具有新关系的group字段,该模型实际上在数据库中没有任何表,因为它是代理模型。
operations = [
migrations.AlterField(
model_name='test',
name='group',
field=models.ManyToManyField(to='mainpage.ExtendedGroup'),
),
]
这是怎么回事?这样对吗?为什么Django要创建与没有任何表的模型的关系?
我只是不明白。
我将不胜感激!
编辑: 当我运行迁移(迁移)时,我会遇到很多错误:
AttributeError:'ManyToManyField'对象没有属性 'm2m_reverse_field_name'
所以它不起作用:(