我必须为active MySQL数据库创建一个简单的CRUD面板。当我试图迁移我的应用程序时,我会收到以下错误:
AssertionError: A model can't have more than one Autofield
我在Django书第18章中读到了以下内容:
每个生成的模型对于每个字段都有一个属性,包括id主键字段。但是,请记住,如果模型没有主键,Django会自动添加id主键字段。因此,您需要删除如下所示的任何行:
id = models.IntegerField(primary_key=True)不仅这些行是多余的,而且如果您的应用程序要向这些表中添加新的记录,它们也会导致问题。
对于这个字段,我也有相同的场景:
id_call = models.BigIntegerField(primary_key=True)但是,如果我遵循上述建议并删除这一行,使用此表的原始应用程序(而不是django应用程序)可能无法正常工作,因为它可能使用这个id_call字段从该表调用数据。
我怎样才能解决这个问题?
发布于 2015-07-20 09:53:17
对我来说,通过将models.AutoField(unique=True)更改为models.AutoField(primary_key=True),同时使用Wordpress数据库。
我在python manage.py --database='olddb' inspectdb > models.py生成的python manage.py --database='olddb' inspectdb > models.py中大约有4个。这里我又使用了一个db,比如olddb,如果您使用默认的db,那么您可以删除--database='olddb'。
我试着运行python manage.py runserver。所以我用上面提到的东西修正了每一行。
参考资料:-
https://docs.djangoproject.com/en/1.8/topics/db/models/#automatic-primary-key-fields
https://stackoverflow.com/questions/30545259
复制相似问题