我的Django模型中只有一个主键,但是它显示为多个主键时出错
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我的Django模型中只有一个主键,但是它显示为多个主键时出错相关的知识,希望对你有一定的参考价值。
我的模特是
class authenticate(models.Model):
name=models.CharField(max_length=50)
uid=models.CharField(max_length=39,editable=False)
image=models.CharField(max_length=250)
email=models.CharField(max_length=100,primary_key=True)
mobile=models.CharField(max_length=12)
dob=models.CharField(max_length=12)
regno=models.CharField(max_length=10,editable=False)
created=models.CharField(max_length=10,editable=False)
last_login=models.CharField(max_length=10)
department=models.CharField(max_length=5)
admin=models.BooleanField(default=False)
尝试在Heroku回购中迁移模型时发生错误:
psycopg2.errors.InvalidTableDefinition: multiple primary keys for table "Auth_authenticate" are not allowed
The above exception was the direct cause of the following exception:
--
--
--
return self.cursor.execute(sql, params)
File "/app/.heroku/python/lib/python3.6/site-packages/django/db/utils.py", line 89, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File "/app/.heroku/python/lib/python3.6/site-packages/django/db/backends/utils.py", line 84, in _execute
return self.cursor.execute(sql, params)
django.db.utils.ProgrammingError: multiple primary keys for table "Auth_authenticate" are not allowed
当我使用sqlite DB时,以上模型运行良好。
答案
默认情况下,Django为每个模型提供以下字段:
id = models.AutoField(primary_key=True)
如果要指定自定义主键,请在您的其中一个字段上指定primary_key = True。如果Django看到您已明确设置Field.primary_key,则不会添加自动ID列。
它显示多个主键的原因可能是您在迁移文件上添加了多个主键及其存在。
解决方案1。删除表(或架构)并迁移文件,然后重新迁移。
解决方案2。打开您的迁移文件,查找具有多个主键的表,然后删除一个并迁移
以上是关于我的Django模型中只有一个主键,但是它显示为多个主键时出错的主要内容,如果未能解决你的问题,请参考以下文章
在使用 UUID 字段作为主字段的 Django 模型中添加非主键自动字段或“序列”字段