python - 在 Django 的过滤器查询中使用 lambda

标签 python django python-2.7 lambda django-views

在我的模型中,我有一个列名称类别,值的形式为 "x -> y -> z"
x,y,z都是用箭头(->)分隔的(虽然整体本身就是一个字符串)

我想要的是根据'y'字符串过滤对象

有点像

MyModel.objects.filter(category = lambda key: y in key)

但它给我错误 TypeError: <lambda>() takes exactly 1 argument (0 given)

Example: MyModel (3 column, category column is foreign key to another model(which has only one column same name=category))
ID   name   category
1    xyz    world->europe->france
2    abc    animal->fourleg->dog
3    pqr    car->europe->benz

我在下面应用了这个查询

MyModel.objects.filter(category = lambda key: 'europe' in key)

我期待返回两个对象(Id 1 和 3)。

我希望它现在晴朗了吗?

我无法弄清楚为什么会这样。或者还有其他方法可以做同样的事情吗? 我是 django 的新手,所以它可能是无意义/不相关或愚蠢的问题,但我找不到解决方案。

Python 2.x

Django 1.4.x

最佳答案

根据字符串的结构,您可以使用contains 查找。像这样的东西:

# 'name' is whatever your string column on category is called
MyModel.objects.filter(category__name__contains='->{}->'.format(y_string))

参见 the docs有关查找类型的更多详细信息。

关于python - 在 Django 的过滤器查询中使用 lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23403390/

相关文章:

python - Flask 没有收到 HTML POST 的数据

python - Blender Python 在同一组中选择对象?

python - 更改 my.cnf 文件中的 innodb_page_size 不会重新启动 mysql 数据库

node.js - 套接字 [SSL : CERTIFICATE_VERIFY_FAILED] (_ssl. c :590) from Client. py 到 Node Server.js

python-2.7 - 如何在 Ubuntu 16.04 上为 Python 2.7 安装 openCV 2.4.13?

python - 将 CEFPython 整合到 Mac 上的 Kivy App 中——键盘输入不起作用

javascript - 在 Django 页面中使用时,Infovis 不会布局图表

python - raw_input() 的行为

python - django中业务逻辑和数据访问的分离

django - Django MiddleWare 排序的实用规则?