Python lambda在django过滤器查询中的使用

Python lambda在django过滤器查询中的使用,python,django,python-2.7,lambda,django-views,Python,Django,Python 2.7,Lambda,Django Views,在我的模型中,我有一个列名类别,值的形式为 “x->y->z” x、 y和z都由箭头(->)分隔(尽管整个本身是一个字符串) 我想要的是根据“y”字符串过滤对象 差不多 MyModel.objects.filter(category = lambda key: y in key) 但是它给了我errorTypeError:()正好取1个参数(给定0) 我在下面的查询中应用了这个 MyModel.objects.filter(category=lambda键:键中的“europe”)和 我期望返

在我的模型中,我有一个列名类别,值的形式为 “
x->y->z”

x、 y和z都由箭头(->)分隔(尽管整个本身是一个字符串)

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

差不多

MyModel.objects.filter(category = lambda key: y in key)
但是它给了我error
TypeError:()正好取1个参数(给定0)

我在下面的查询中应用了这个

MyModel.objects.filter(category=lambda键:键中的“europe”)

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

我希望现在天气晴朗

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

Python2.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))

有关查找类型的更多详细信息,请参阅。

我对您的困惑感到困惑。没有理由认为这会奏效,我也不知道你为什么会这么认为。Django查询不是这样工作的。@DanielRoseman:那你有什么建议?还有其他选择吗?还不清楚你想要实现什么。您能否给出一些模型实例、预期查询和预期输出的示例?@desiredlogin:请查看更新的问题详细信息。我添加了一个示例。错误:
相关字段具有无效的查找:contains
?@pankaj:您最初说过类别是字符串。显然,它实际上是一个
外键
?这就是为什么你应该总是把你的模型放在问题中。无论如何,我已经将答案更新为匹配。谢谢:)还有一件事
category\uuuuuuu name\uuu contains='->{}->'.format(y\u string))
不起作用,但
category\uu name\uu contains='y\u string')
效果很好:)
# 'name' is whatever your string column on category is called
MyModel.objects.filter(category__name__contains='->{}->'.format(y_string))