Django:Applying filter() 函数给出 NameError

Django:Applying filter() function is giving NameError

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

'Connect' 模型对象的 'connection' 字段的值可以是 ChatVideoCall.

以下是我的 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 个在 connection_list 中有 Chat 的对象。我已经编写了以下代码,但似乎 work.It 没有引发错误:

name 'connecting_medium' is not defined.

def my_view(request):
    context['list_no'] = Visitor.objects.filter('Chat' in list(connecting_medium.values_list('connection',flat=True)))
        #--------------------rest-of-the-code----------------------------#

P.S:以上代码只是sample.I不允许post公司project.But源代码的情况正是这样。

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

本例使用双下划线语法遍历关系:

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

以下检索具有 Connect 的所有 Visitors 对象,其连接是 Chat:

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

Django offers a powerful and intuitive way to “follow” relationships in lookups... source.