django get_or_create 没有按预期工作

标签 django django-models

我有一个模型叫做零食:

class Snack(models.Model):
    snack = models.CharField(max_length=9)

当我做的时候

Snack.objects.get_or_create(snack="borsh")

我收到这个错误:

django.db.utils.IntegrityError: duplicate key value violates unique constraint "restaurants_snack_pkey"
DETAIL:  Key (id)=(6) already exists.

如果我再做一次,它会告诉我同样的事情,除了 key (已经存在)将是 7 等等。

key 确实已经存在,我想知道如何让它选择下一个可用的 key ?

提前致谢。

热尼亚

最佳答案

你可能做了一些手动数据导入,即使没有,这不是 django 的问题,而是数据库自动递增序列的问题。 Django 有一个管理命令,可以生成 sql 命令来重置这些命令:

./manage.py sqlsequencereset myapp1 myapp2

如果您使用的是 PostgreSQL,您可以像这样将其通过管道传输:

./manage.py sqlsequencereset myapp1 myapp2 | psql

或者mysql,如果你用的是MySQL,但我没试过。

关于django get_or_create 没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24290019/

相关文章:

python - Django 中基于函数的中间件与基于类的中间件

python - ForeignKey 和扩展 Django 中的 User 类/模型之间的区别

python - 为什么我的 Django 模型字段不起作用?

python - 我可以更改模型字段的类型吗?

python - 在 Django 中收集单独的模型

python - Django错误相关字段查找无效: icontains

python - Django form.is_valid 总是返回 true

python - django ORM 中的多个查询

django - 断开模型的信号并在 django 中重新连接

django - 无需控制键即可停止 Django 服务器