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

时间:2019-02-27 09:36:27

标签: django django-models django-views manytomanyfield

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中具有Chat的{​​{1}}个对象。我已经编写了以下代码,但似乎不起作用,它引发了以下错误:

  

未定义名称“ connecting_medium”。

connection_list

P.S:以上代码仅是示例。我不能发布公司项目的源代码。但是情况完全是这样。

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

以下内容使用连接聊天连接检索所有访问者对象:

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

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