首页 > 解决方案 > Django:应用 filter() 函数给出 NameError

问题描述

Class Connect(models.Model):
    connection = models.Charfield(max_length=120)

'Connect' 模型对象的 'connection' 字段的值可以是Chat,VideoCall.

以下是我的Visitor模型,它有connecting_medium很多领域

Class Visitor(models.Model):
    name = models.CharField(max_length=120)
    connecting_medium = models.ManyToManyField('Connect')

我知道,如果vVisitor模型对象,那么以下代码行将给出该特定访问者的连接列表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:以上代码只是示例。我不允许发布公司项目的源代码。但情况就是这样。

标签: djangodjango-modelsdjango-viewsmanytomanyfield

解决方案


这不是您在 Django 中编写查询的方式。您需要使用关键字参数。

在这种情况下,使用双下划线语法来遍历关系:

Visitor.objects.filter(connecting_medium__connection='Chat')

推荐阅读