嗨,我有以下设置。
Django 1.9, MongoDB的, pymongo 2.7, mongoengine 0.9
我编写了一个API,用于按用户方式在后端服务器上存储日志。以下是表格样本
user subject registered changed_on
abc eng Y "2018-04-18T00:00:00Z"
abc maths N "2018-04-18T00:10:00Z"
xyz eng Y "2018-04-18T00:10:00Z"
我也已阅读此API,其中我们为过滤器提供用户名和时间戳,如下所示:
{
"user" : "abc",
"from_date" : "2018-04-18T00:00:00Z"
}
正在应用过滤器的 serializers.py 中的行是
Logs.objects.filter(user__iexact='abc',changed_on__gte=from_date)
现在有时当我添加新日志并从邮递员中检索它时,它无法正常工作。我必须重新启动django服务器然后它给我新添加的行。
我不明白为什么会这样。
EDIT1: Full Serializer.py
from rest_framework import serializers
class GetUserLogs(serializers.Serializer):
user = serializers.CharField(label=_("USER"))
token = serializers.CharField(label=_("Token"))
from_date = serializers.CharField(label=_('From date'), default="")
till_date = serializers.CharField(label=_('Till date'), default=datetime.datetime.now().isoformat().split(".")[0]+'Z')
def validate(self, attrs):
user = attrs.get('user')
token = attrs.get('token')
from_date = attrs.get('from_date')
if user:
tokendetails = validate_token(token)
if not tokendetails:
msg = _('Invalid token.')
raise serializers.ValidationError(msg)
else:
userdetails = tokendetails.user
if userdetails.check_user(user):
rows = Logs.objects.all().filter(user__iexact=user,changed_on__gte=from_date, changed_on__lte = till_date)
print(len(rows))
else:
msg = _('Invalid USER)
raise serializers.ValidationError(msg)
else:
msg = _('Must include "USER".')
raise serializers.ValidationError(msg)
attrs['rows'] = rows
return attrs
答案 0 :(得分:0)
所以经过近一天的大量调试后,我发现我们设置为系统当前时间戳的till_date的默认值并没有随着时间的增加而增加。所以我将默认值更改为空字符串,并在读取until_date的值后添加到代码下面。
if till_date == "":
till_date = datetime.datetime.now().isoformat().split(".")[0]+'Z'
每当缺少值时,它会将till_date值重置为当前时间戳。
希望有一天能帮到某人。