我必须为活动的MySQL数据库创建一个简单的CRUD面板。当我尝试迁移我的应用程序时,收到以下错误:
AssertionError: A model can't have more than one Autofield
我已经阅读了Django Book第18章中的以下内容:
每个生成的模型都有每个字段的属性,包括id 主键字段。但是,回想一下Django会自动添加一个 如果模型没有主键,则为id主键字段。从而, 你想要删除任何看起来像这样的行:
id = models.IntegerField(primary_key=True)
不仅是这些行 多余的,但如果你的应用程序会出现问题,它们也会导致问 将新记录添加到这些表中。
我对此字段的情况相同:
id_call = models.BigIntegerField(primary_key=True)
但是,如果我按照上述建议删除此行,则使用此表的原始应用程序(不是django应用程序)可能无法正常工作,因为它可能使用此id_call
字段从此表调用数据。
我该如何解决这种情况?
答案 0 :(得分:1)
对我而言,在使用Wordpress数据库时,将models.AutoField(unique=True)
更改为models.AutoField(primary_key=True)
。
我在models.py
生成的python manage.py --database='olddb' inspectdb > models.py
中有大约4个。在这里我再使用一个数据库,比如olddb
,如果使用默认数据库,则可以删除--database='olddb'
。
我尝试了python manage.py runserver
。所以我通过上面提到的事情修复了每一行。
参考: -
https://docs.djangoproject.com/en/1.8/topics/db/models/#automatic-primary-key-fields