django - Django:应用 filter() 函数给出 NameError
问题描述
Class Connect(models.Model):
connection = models.Charfield(max_length=120)
'Connect' 模型对象的 'connection' 字段的值可以是Chat
,Video
或Call
.
以下是我的Visitor
模型,它有connecting_medium
很多领域。
Class Visitor(models.Model):
name = models.CharField(max_length=120)
connecting_medium = models.ManyToManyField('Connect')
我知道,如果v
是Visitor
模型对象,那么以下代码行将给出该特定访问者的连接列表v
。
connection_list=list(v.connecting_medium.values_list('connection',flat=True))
Visitor
现在我的动机是获取所有Chat
在其connection_list
. 我已经编写了以下代码,但它似乎不起作用。它引发了一个错误:
名称“connecting_medium”未定义。
def my_view(request):
context['list_no'] = Visitor.objects.filter('Chat' in list(connecting_medium.values_list('connection',flat=True)))
#--------------------rest-of-the-code----------------------------#
PS:以上代码只是示例。我不允许发布公司项目的源代码。但情况就是这样。
解决方案
这不是您在 Django 中编写查询的方式。您需要使用关键字参数。
在这种情况下,使用双下划线语法来遍历关系:
Visitor.objects.filter(connecting_medium__connection='Chat')