尝试将查询集中的日期时间与日期时间对象进行比较

时间:2019-08-07 01:12:17

标签: django datetime django-queryset

这也许很明显,但是我是Python和Django的新手。

我正在编写中间件,需要比较两个用户时间点。基本上,如果用户在网站上的访问时间超过24小时,我想删除其权限。

class PremiumMiddleware(object):
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        response = self.get_response(request)
        user = request.user
        datetime_done = Purchase.objects.filter(user=user).values_list("datetime_completed")

        if datetime_completed != "":
            if datetime_completed > datetime.datetime.now():
                remove_perm('add_permission', user, Purchase)
            return response

这是我得到的错误:

TypeError: '>' not supported between instances of 'str' and 'datetime.datetime'

我还有第二个问题。我可以将权限直接放在购买模型中还是必须在用户模型中?

用户每次执行操作时,都会使用datetime_done,date_action,id,新令牌等更新此模型。这是设置它的不好方法吗?

class Purchase(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE) 
    datetime_action = models.DateTimeField(default=datetime.now, blank=True)
    datetime_completed = models.DateTimeField(default=datetime.now, blank=True)
    id = models.CharField(max_length=250, blank=True)
    success = models.BooleanField(default=False)

class Meta:
    ordering = ['user']
    permissions = (("add_permission", "Add Permission"),)

def __str__(self):
    return f'{self.user}'

0 个答案:

没有答案