Самая простая вещь, о которой я могу подумать, это взять дополнение к вашему списку ключевых слов, то есть, скажем, после обработки пользовательского ввода у вас есть список строк типа ['keyword1', 'keyword2', 'keyword3']
в переменной keywords
. Затем вы берете все ключевые слова, которых нет в этом списке:
disallowed_keywords = Keyword.objects.exclude(keyword_name__in=keywords)
И затем вместо того, чтобы находить объявления, соответствующие вашим разыскиваемым ключевым словам, вы исключаете те, которые соответствуют неправильным:
Ad.objects.exclude(keyword__in=disallowed_keywords)