1

我必须为活动的 MySQL 数据库创建一个简单的 CRUD 面板。当我尝试迁移我的应用程序时,我收到以下错误:

AssertionError: A model can't have more than one Autofield

我在 The Django Book 第 18 章中阅读了以下内容:

每个生成的模型都有每个字段的属性,包括 id 主键字段。但是,请回想一下,如果模型没有主键,Django 会自动添加一个 id 主键字段。因此,您需要删除任何如下所示的行:

id = models.IntegerField(primary_key=True)这些行不仅是多余的,而且如果您的应用程序将向这些表中添加新记录,它们也会导致问题。

我对这个领域有同样的情况:

id_call = models.BigIntegerField(primary_key=True)

但是,如果我遵循上述建议并删除此行,则使用此表的原始应用程序(不是 django 应用程序)可能无法正常工作,因为它可能使用此id_call字段调用此表中的数据。

我该如何解决这种情况?

4

1 回答 1

1

对我来说,在使用 Wordpress 数据库时更改models.AutoField(unique=True)为, 。models.AutoField(primary_key=True)

我有大约 4 个models.pypython manage.py --database='olddb' inspectdb > models.py. 这里我又用了一个db,比如说olddb,如果你使用默认db,那么你可以删除--database='olddb'

我试着跑步python manage.py runserver。所以我通过上面提到的东西修复了每一行。

参考:-

https://docs.djangoproject.com/en/1.8/topics/db/models/#automatic-primary-key-fields

https://docs.djangoproject.com/en/1.8/topics/db/multi-db/#

于 2015-07-20T09:53:17.960 回答