如何防止django数据库使用已删除对象的id作为新对象?

时间:2014-05-31 06:35:00

标签: python database django sqlite django-database

我正在撰写一个django网站,其中包含sqlite数据库,我的网站上有一个模型:

class Foo(models.model):
   name = models.Charfield(max_length=30)

数据库为此类创建一个唯一的Id列,考虑我从类Foo创建一个对象并删除它并创建另一个对象g,其{{1}是一样的:

Id

但我不希望数据库为新创建的对象使用旧的已删除对象>> f = Foo.objects.create(name="fooname") >> f.id 4 >> f.delete() >> g = Foo.objects.create(name="fooname2") >> g.id 4 ,我该怎么做?

1 个答案:

答案 0 :(得分:1)

这是Django 1.7中已知的fixed错误,请参阅:

引自release notes

  

现在将使用。创建SQLite数据库中的AutoField列   AUTOINCREMENT选项,保证单调增量。这将   导致主键编号行为在SQLite上发生变化,成为   与大多数其他SQL数据库一致。这仅适用于   新创建的表。如果您使用较旧的数据库创建了数据库   Django的版本,您将需要迁移它以利用   这个功能。