我正在尝试根据多对多字段过滤对象。
profiledata = UserProfile.objects.get(user=newdata)
role = profiledata.role
ib = IdealBehaviour.objects.filter(cbs_role = cbsrole)
a_questions = Questions.objects.filter(Q(role=role) & Q(ideal_behaviour=ib))
这里我没有得到a_questions。 这样做我得到错误。
(1242, 'Subquery returns more than 1 row')
Django Version: 1.5.1
Exception Type: DatabaseError
Exception Value:
(1242, 'Subquery returns more than 1 row')
Exception Location: /usr/lib/python2.7/dist-packages/MySQLdb/connections.py in defaulterrorhandler, line 36
Python Executable: /usr/bin/python
Python Version: 2.7.6
我尝试使用_in lookup
a_questions = Questions.objects.filter(Q(role=role) & Q(ideal_behaviour_in=ib))
获取错误
Cannot resolve keyword 'ideal_behaviour_in' into field. Choices are: created_time, id, ideal_behaviour, question, role
我不知道我在做什么错。 因为IdealBehaviour与CBSROLE有许多关系,所以ib正在被正确过滤 请帮帮我。
答案 0 :(得分:4)
你需要__in
的双下划线,这里你不需要Q.
a_questions = Questions.objects.filter(role=role, ideal_behaviour__in=ib)