gpt4 book ai didi

python - Django : Filter query based on custom function

转载 作者:IT老高 更新时间:2023-10-28 21:57:44 26 4
gpt4 key购买 nike

我的 Django 模型类中内置了一个函数,我想使用该函数过滤我的查询结果。

  class service:
......
def is_active(self):
if datetime.now() > self.end_time:
return False
return True

现在我想在我的查询过滤器中使用这个函数,比如

nserv = service.objects.filter(is_active=True)

我知道,对于这种简单的 'is_active' 情况,我可以直接在过滤器查询中进行这种比较,但对于更复杂的情况,这可能是不可能的。如何根据自定义函数进行查询?

最佳答案

我刚刚遇到了类似的问题。问题是我必须返回一个 QuerySet 实例。对我来说,一个快速的解决方案是做这样的事情:

active_serv_ids = [service.id for service in Service.objects.all() if service.is_active()]
nserv = Service.objects.filter(id__in=active_serv_ids)

我很确定这不是最漂亮和最高效的方法,但它对我有用。

更详细的方法是:

active_serv_ids = []

for service in Service.objects.all():
if service.is_active():
active_serv_ids.append(service.id)

nserv = Service.objects.filter(id__in=active_serv_ids)

关于python - Django : Filter query based on custom function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5685037/

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