2

我对 Django 有点陌生,我在构建项目时遇到了一些障碍。

本质上,我有两张桌子。项目和参赛作品。用户创建项目,然后将条目添加到每个项目。Entries 有一个 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 通过 "前进”和“后退”网址。

4

1 回答 1

1

您可以覆盖模型Entrysave方法来完成您想要做的事情:

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)

现在,无论您在何处引用项目 ID,对于用户,您都可以引用entry.entry_unique

latest()在这里阅读

于 2013-07-19T22:02:18.450 回答