2

我正在使用 SQLite 运行 Django 1.5,并且我有一个名为Assignment. 每当我创建一个时,它都会以正确的pk值创建。但是,每当我尝试Assignment从我的数据库中检索任何内容时,它总是返回一个 pk 的90. 我已经为此奋斗了一个小时,我不得不承认我完全糊涂了。

这是我的代码,如果有任何用处。

class Assignment(models.Model):
    class Meta:
        app_label = 'holiday'
        unique_together = ('year', 'employee')

    year = models.PositiveIntegerField(db_index=True)
    employee = models.ForeignKey('bsc.Employee', db_index=True)
    days = models.PositiveIntegerField(null=True)

这个,以及一堆基于与这个相关的模型计算一些值的方法。没有什么花哨。

我必须补充一点,这个模型的过去有些坎坷——在我心不在焉的情况下,我最初设置为主键,当我向不同的员工year添加两个 s 时,它很快就失败了。Assignment也许我应该看看数据库模式,看看有没有问题。值得庆幸的是,该应用程序尚未投入生产,但希望可以在不完全重置数据库的情况下解决此问题。

4

1 回答 1

1

如果您之前创建了 90 条记录,则从数据库中删除这些行;您的数据库键索引仍将设置为数据库中的下一个主键编号。

解决这个问题的方法是在另一个stackoverflow帖子中描述: SQLite Reset Primary Key Field

于 2013-07-16T11:33:44.190 回答