如何在Django中创建一个具有唯一ID的表,该表在重复键上递增

时间:2013-07-19 21:16:38

标签: mysql django

我是Django的新手,我在构建项目时遇到了一些障碍。

基本上,我有两张桌子。项目和参赛作品。用户创建项目,然后向每个项目添加条目。条目具有auto_increment ID,project_Id列用于指定哪个项目拥有条目,但条目ID在站点范围内递增。我想在每个项目的基础上增加条目,这样用户在项目中创建的第一个条目将始终为1,第二个条目将为2,等等。

我可以在models.py中执行此操作吗?例如,在:

class Entries(models.Model):
    project_id = models.ForeignKey(Projects)

我可以创建另一行(比如,entry_unique)来告诉它创建另一个列,当project_id和entry_unique与前一个表项相同时,该列增加+1吗?

非常重要的是,每个条目都有一个可见的(对用户)条目ID#,每次为该项目创建一个新条目时,它会增加+1,并且他们能够通过+1或 - 来浏览其条目。 1通过“前进”和“后退”URL。

1 个答案:

答案 0 :(得分:1)

您可以覆盖模型Entry的{​​{1}}方法来完成您想要做的事情:

save

现在,无论您在何处引用项目ID,对于用户,您都可以引用class Entries(models.Model): project_id = models.ForeignKey(Projects) def save(self, *args, **kwargs): user = kwargs.pop('user') project = kwargs.pop('project') latest = Entries.objects.filter(user=request.user, project_id=project) latest_entry = latest.entry_unique if latest else 1 self.entry_unique = latest_entry super(Entries, self).save(*args, **kwargs)

在此处阅读latest()