gpt4 book ai didi

python - Django 根据检索到的值进行过滤

转载 作者:行者123 更新时间:2023-12-01 04:29:23 25 4
gpt4 key购买 nike

我有一个模型,其中包含一些如下所示的参数

{ "user_name" : "john",
"enter_time" : 1442257970.509184,
"frequency" : 30
}

我需要编写一个过滤函数,最好使用 django-filter 或任何其他 pythonic 方式,这样我就可以过滤掉

中的那些记录
def test():
cur_time = time.time()
if cur_time >= enter_time + frequency:
return True
return False

目前在我的views.py中,我可以根据名称和单个值进行过滤。例如,

records = UserRecord.objects.filter(token=user_token, user_name=name, status='active').distinct()
serializer = RecordSerializer(records, many=True)

我不确定,如何根据 test() 中定义的测试条件进行过滤。一种解决方法是获取 serializer.data 并处理 OrderedDictionaries 列表以过滤掉内容。但我正在寻找 django 的方法。

最佳答案

您可以use F expressions in filters 。对于您的情况:

UserRecord.objects.annotate(time_plus_freq=F('enter_time')+F('frequency'))\
.filter(time_plus_freq__lt=cur_time)

这种方式过滤是在 SQL 中完成的,您不需要在 Python 端执行任何操作。

如果 Django 在定义带注释的表达式的类型时遇到困难,请查看 output_field kwarg在注释中。

关于python - Django 根据检索到的值进行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32580292/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com