Class Connect(models.Model):
connection = models.Charfield(max_length=120)
“连接”模型的对象的“连接”字段的值可以是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----------------------------#
P.S:上面的代码只是样本。我不允许发布公司项目的源代码。但情况就是这样。
这不是你在Django中编写查询的方式。您需要使用关键字参数。
在这种情况下,使用双下划线语法遍历关系:
Visitor.objects.filter(connecting_medium__connection='Chat')
以下内容使用连接为Chat的Connect检索所有Visitors对象:
Visitor.objects.filter(connecting_medium____connection='Chat')
Django提供了一种强大而直观的方式来“跟踪”查找中的关系...... source。