Как использовать переменную там, где ожидается ключевое слово

У меня есть эта проблема с Django, но я чувствую, что это больше вопрос по python:

user_data = User.objects.filter(userid__startswith='Jeremy').values('mail','address')

Вышеописанное работает и возвращает мне ровно одну строку, как я знаю, что это должно быть. Это не работает:

jeremy='Jeremy'
user_data = User.objects.filter(userid__startswith=jeremy).values('mail','address')

потому что при попытке использовать manage.py runserver жалуется, что мой queryset пуст.

Я облазил весь интернет и нашел бесчисленное множество вариантов использования словаря, например, такой:

my_kws={'userid__startswith':'Jeremy'}
user_data = User.objects.filter(**mykws).values('mail','address')

, которые действительно работают, но при изменении на:

jeremy='Jeremy'
my_kws={'userid__startswith':jeremy}
user_data = User.objects.filter(**mykws).values('mail','address')

абсолютно не работают. По крайней мере, для меня они заканчиваются точно так же, как и раньше, с пустым querySet. В других бесчисленных ответах предлагается сделать так:

jeremy='Jeremy'
user_data = User.objects.filter(f'userid__startswith={jeremy}').values('mail','address')

с точно таким же результатом, как и раньше. К сведению, я использую python 3.10.12

Вернуться на верх