Django как использовать переменную в фильтре запроса

Я пытаюсь создать фильтр Django, используя переменную в качестве входного фильтра для запроса contains на json-поле. Я просто не могу заставить его работать. По моим наблюдениям, решением должно быть использование kwargs, но я не знаю, как это реализовать.

lookupValue = "[{{\"displayName\":\"{0}\"}}]".format(user['name'])
print("value is: ")
print(lookupValue)
recent_user_calls = CallRecord.objects.filter(participants__contains = [{"displayName":"Some Name"}])
#recent_user_calls = CallRecord.objects.filter(participants__contains = lookupValue)

Я создаю значение, которое хочу искать, и помещаю его в значение поиска. В последней закомментированной строке я пытаюсь использовать это значение в запросе. Это не работает, так как предыдущая строка работает отлично. За несколько строк до этого я печатаю значение lookupvalue, и оно на 100% совпадает с полностью напечатанной версией. Я смотрю на это уже 2 дня. Кто-нибудь может направить меня в правильном направлении?

Проблема в том, что переменная, которую вы передаете в запросе, является строкой, а не списком.

Вы можете написать:

recent_user_calls = CallRecord.objects.filter(participants__contains = [{"displayName":user['name']}])

Или вы можете напрямую фильтровать с помощью ключа:

recent_user_calls = CallRecord.objects.filter(participants__displayName=user['name'])
Вернуться на верх