这也许很明显,但是我是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}'