gpt4 book ai didi

python - 基于自定义函数的Django过滤器

转载 作者:太空宇宙 更新时间:2023-11-04 04:50:54 25 4
gpt4 key购买 nike

我有一个表 AvailableDates,其中有一列 date 用于存储日期信息。我想在对日期执行一些操作后过滤日期,该操作由 convert_date_to_type 函数定义,该函数采用用户提供的参数 input_variable。

def convert_date_to_type(date,input_variable):
#perform some operation on date based on input_variable
#return value will be a type, which will be any one item from types list below
return type

类型列表:

types = []
types.append('type1')
types.append('type2')
types.append('type3')

现在我想根据类型过滤表格。我将在 for 循环中执行此操作:

for i in range(0,len(types)):
#filter table here based on types[i], something like this
AvailableDates.objects.filter(convert_date_to_type(date,input_variable)=types[i])

我怎样才能做到这一点?非常感谢任何其他方法。

我无法将type 信息存储在单独的列中,因为一个日期可以根据用户提供的input_variable 具有不同的类型。

最佳答案

您采用的方法将导致非常耗时的查询,因为您遍历所有对象并因此跳过所有数据库系统在查询方面提供的时间优势。

您必须回答的主要问题是“该查询的使用频率是多少?”

如果会很多,那么我会建议采用以下方法。

  1. 创建与您的模型具有一对一关系的额外列或表
  2. 覆盖模型的保存功能以处理您的日期,并在保存模型时将结果存储在第 1 步中创建的这个额外列中。
  3. 对第 1 步中创建的这个额外列执行查询。

这种方式有空间开销,但是会使得查询速度更快。

如果不会很多,但查询会使您的网络请求明显变慢,那么也可以使用上述方法。这将有助于提供流畅的网络体验。

关于python - 基于自定义函数的Django过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48353488/

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