Django:应用filter()函数给出了NameError

问题描述 投票:1回答:2
Class Connect(models.Model):
    connection = models.Charfield(max_length=120)

“连接”模型的对象的“连接”字段的值可以是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上有Chatconnection_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----------------------------#

P.S:上面的代码只是样本。我不允许发布公司项目的源代码。但情况就是这样。

django django-models django-views manytomanyfield
2个回答
2
投票

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

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

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

1
投票

以下内容使用连接为Chat的Connect检索所有Visitors对象:

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

Django提供了一种强大而直观的方式来“跟踪”查找中的关系...... source

© www.soinside.com 2019 - 2024. All rights reserved.