我有一个django应用程序,模型如下:
Question
型号
Answer
模型,带有ForeignKey
回到问题。 (一个问题可以
有多个答案。)
一个Flag
模型,其中包含ForeignKey
答案。 (可以标记答案
不合适。)
以上所有内容都有一个user
字段,用于定义创建该对象的用户。
我正在尝试获取所有问题的列表,其中包含当前用户已被标记的答案。我试过这个:
Question.objects.filter(answer__user=user).\
filter(answer__flag__isnull=False).distinct()
...但我相信这将返回一个问题列表,其中包含当前用户的答案以及已被标记的答案,但不一定能保证这是用户已被标记的答案。
有一种简单的方法吗?基本上,我想让过滤器的answer
部分引用它们的相同答案。
如果不清楚,请告诉我。
答案 0 :(得分:6)
查询完全符合您的要求,但您应该过滤标记不 null
的问题。链接过滤器and
编辑在一起,因此它会过滤掉所有具有特定用户答案的问题,然后针对标记的答案过滤该集合。
您也可以将这两个条件放在同一个filter
来电中:
Question.objects.filter(answer__user=user, answer__flag__isnull=False)
答案 1 :(得分:0)
怎么样:
questions = [a.question for a in user.answer_set.filter(flag__isnull=True)]
编辑:当然,这不会返回查询集。并且为了防止重复的问题,可以将列表理解包装在set()中。