自动递增Django DateField

时间:2017-04-16 16:59:51

标签: django date django-models

如何创建一个DateField,它会以 pk 字段的方式自动递增1天?

例如,我会创建一个新对象,这将是2017年4月16日,下一个对象将是2017年4月17日,即使它们都是在同一天提交的。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

如何覆盖模型' std::string outer::name = "bla"; 方法,如下所示:

save

当然,上面的内容可以使用Django signals来实现。 pre_save一个。

答案 1 :(得分:0)

所以我使用Nik_m's回答的部分内容以及我的一些知识来解决这个问题。

我基本上创建了一个while循环,它继续迭代并添加一天,而不是Nik_m的答案,由于缺少迭代,它在第三个对象之后不起作用。

  def save(self, *args, **kwargs):
    same_date_obj = Challenge.objects.filter(date=self.date)

    if same_date_obj.exists():
        while True:
            if Challenge.objects.filter(date=self.date).exists():
                self.date += timedelta(days=1)
            else:
                break
    super().save(*args, **kwargs)

编辑:这个答案不再有效,它需要一个while循环,因此需要无限量的查询。 @ Nik_m修改后的答案更好。