Немного трудно следить за тем, что вы действительно пытаетесь сделать.Ваше первое утверждение выглядит так, как будто вы дважды выбираете один и тот же объект QuerySet of Answer.Сначала через answer_set.answers.all()
, а затем снова через .filter(id__in=...)
.Дважды проверьте в оболочке и посмотрите, даст ли это вам список ответов, которые вы ищете:
answers = answer_set.answers.all()
После того, как вы это почистите, вам будет немного легче (и другим, работающим надкод), чтобы прочитать, вы можете посмотреть .exclude () и __ в поиск поля .
existing_question_answers = QuestionAnswer.objects.filter(...)
new_answers = answers.exclude(question_answer__in=existing_question_answers)
Приведенный выше поиск может не синхронизироваться с определениями вашей модели, но, вероятно, он подберет вас достаточно близко, чтобы завершить работу самостоятельно.
Если вам все еще нужно получить список идентификаторовзначения, то вы хотите играть с .values_list () .В вашем случае вы, вероятно, захотите добавить дополнительную квартиру = True.
answers.values_list('id', flat=True)