【问题标题】:How to stop save -data if the data is saved within today for a user如果数据在今天为用户保存,如何停止保存数据
【发布时间】:2022-01-19 14:19:27
【问题描述】:

class RequestPop(models.Model):

    request_pop = models.PositiveIntegerField(default=0)
    user = models.ForeignKey(
        settings.AUTH_USER_MODEL, on_delete=models.CASCADE,unique=False,null=True)

    created_at = models.DateTimeField(auto_now_add=True)    
    available_pop = models.PositiveIntegerField(default=0)

    def __str__(self):
        return "{}-{}".format(self.user,self.request_pop)

    def save(self, *args, **kwargs):
        if self.user:
            old_obj = RequestPop.objects.filter(user=self.user).filter(created_at = datetime.today).last()
            if not old_obj:
                super(RequestPop, self).save(*args, **kwargs) 

但我的代码不起作用。如果数据已在今天保存,如何停止保存数据。

【问题讨论】:

  • created_at DateTimeField 字段,但您使用日期进行过滤。然后很可能使用另一个小时分钟,然后是数据库中的对象。
  • 尝试过滤:...lter(created_at__day = datetime.to...

标签: django django-models


【解决方案1】:

我会这样做:

class RequestPop(models.Model):
    request_pop = models.PositiveIntegerField(default=0)
    user = models.ForeignKey(
        settings.AUTH_USER_MODEL, on_delete=models.CASCADE, unique=False, null=True)

    created_at = models.DateTimeField(auto_now_add=True)
    available_pop = models.PositiveIntegerField(default=0)

    def __str__(self):
        return "{}-{}".format(self.user, self.request_pop)

    def save(self, *args, **kwargs):
        if self.user:
            now = timezone.datetime.now()
            today_midnight = timezone.datetime(day=now.day, month=now.month, year=now.year)
            old_obj = RequestPop.objects.filter(user=self.user).filter(created_at__gte=today_midnight).last()
            if not old_obj:
                super(RequestPop, self).save(*args, **kwargs)

【讨论】:

  • 谢谢@Josewails。它确实有效!
【解决方案2】:

你可以这样做:

RequestPop.objects.filter(user=self.user).filter(created_at__lte = datetime.today()).last()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-11
    • 1970-01-01
    • 1970-01-01
    • 2021-04-13
    相关资源
    最近更新 更多