是否可以通过自定义python度量函数过滤Django对象?



我正在尝试根据我的自定义函数获取包含类似对象的查询

def sessRatio(s1, s2):
ratio = L.seqratio([s1.browser_family, s1.device, s1.os_family, s1.os_version, s1.ip, s1.browser_version],
[s2.browser_family, s2.device, s2.os_family, s2.os_version, s2.ip, s2.browser_version])
ratio += boolRatio(s1.mobile==s2.mobile, s1.tablet==s2.tablet, s1.touch==s2.touch, s1.pc==s2.pc, s1.bot==s2.bot)
if(len(s1.meta)>0 and len(s2.meta)>0):
ratio += L.ratio(s1.meta, s2.meta)
ratio /= 3
else:
ratio /= 2
return ratio

所以在我看来,我创建了一个 s1 对象,并希望获得 sessRatio(s1,s2(>0.5 的 s2。Django 过滤器仅适用于原始 SQL,因此我可能无法在那里使用我的 python 函数。

虽然这不是一次性数据库 查询 也许一个简单的 s2 对象列表就足够了?类似的东西

s2_objects = [s2 for s2 in S2.objects.all() if sessRatio(s1, s2) > 0.5]

这是否是一种解决方案取决于我们正在谈论的 s2 对象的数量。 我相信不可能使用 python 函数直接查询数据库。

但是,Django 确实允许一些复杂的查询,如此处所述。但这意味着重建你的过滤器函数

最新更新