django get_or_create没有按预期工作

时间:2014-06-18 15:53:36

标签: 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.

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

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

提前致谢。

Jenia

1 个答案:

答案 0 :(得分:1)

您可能已经进行了一些手动数据导入,即使没有,也不是django的问题,而是数据库自动增量序列。 Django有一个管理命令,可以生成sql命令来重置那些:

./manage.py sqlsequencereset myapp1 myapp2

如果你正在使用PostgreSQL,你可以像这样管道它:

./manage.py sqlsequencereset myapp1 myapp2 | psql

mysql如果您使用的是MySQL,但我还没有使用它。