你可以这样做:
import itertools
ids = set(existing_answer.answer.id for existing_answer in existing_question_answers)
answers = itertools.ifilter(lambda x: x.id not in ids, answers)
在评估QuerySet时阅读,请注意,将整个结果加载到内存中(例如通过list())是不好的。
参考: itertools.ifilter
关于评论的更新:
有多种方法可以做到这一点。一种(在内存和时间方面可能不是最好的一种)是做完全相同的:
answer_ids = set(answer.id for answer in answers)
existing_question_answers = filter(lambda x: x.answer.id not in answers_id, existing_question_answers)
什么不叫list()
上Queryset
?
answers_list = list(answers)