在Django中使用过滤器查询2 manymany字段



我将尽力描述我在这里要做的事情。我有三个类:

  • QuestionType
  • QuestionTemplate

,关系为:

  • Question <- manymany -> QuestionType
  • QuestionTemplate <- manymany -> QuestionType

因此,查询是在QuestionTemplate内部的一个方法中,该方法为我提供与QuestionTemplate相关的具有相同QuestionType的可能问题列表。

我试过了:questions = Question.objects.filter(type__in = template.type.all())其中"template"是一个QuestionTemplate对象。但是这个查询返回给我的是在模板的QuestionType列表中至少有一个QuestionType的问题。我想做的是在问题和模板中获得完全相同的QuestionTypes。

我试了很多东西,但不能得到这个工作,请,有人救我!

types = template.type.all()
query = Question.objects
for t in types:
    query = query.filter(type = t)
questions = []
for q in query.select_related('type'):
    ok = True
    for t in q.type.all():
        if t not in types:
            ok = False
            break
    if ok:
        questions.append(q)
save_questions_in_m2m_relations_so_that_you_dont_have_to_repeat_this(questions)

相当笨拙,但应该可以满足您的需要。

相关内容

  • 没有找到相关文章

最新更新