django - Annotate 中的 ExpressionWrapper 在 django 中不起作用
问题描述
from django.db.models import F, ExpressionWrapper
resource_list = Resources.objects.filter(active=True, status__id=STATUS_PUBLIC_ID)
resource_list = resource_list.annotate(rank=ExpressionWrapper(
similar(keywords, F('title')), output_field=DecimalField()
)).filter(rank__gt=0).order_by('-rank').distinct()
def similar(a, b):
print(a, b)
return SequenceMatcher(None, a, b).ratio()
当我运行上面的代码时,它给了我一个错误“TypeError:'F' object is not iterable” Resources 是我拥有的模型,它有一个字段标题,similar 是一个检查 2 个字符串之间相似性比率的函数
解决方案
推荐阅读
- delphi - 使用动态数组的 WriteConsoleOutput
- android - 适配器更新后微调器显示值(选择)更改 (notifyDataSetChanged)
- go - 什么是“regex grep”,应用于文件,Golang 中的等价物?
- python - 按标签检测和合并
- typescript - TypeScript:通用函数返回 null
- tensorflow - 为什么我的 anaconda 提示显示此错误?
- python - 索引时 int 对象不可下标
- android - NetworkStatsManager - 最早可能的开始时间是多少?
- php - 使用 AWS EC2 和 RDS MySQL 的 React 实施?
- javascript - 带参数的Nodejs回调