Учитывая, что значение x
является выражением, которое должно использоваться внутри метода фильтра, т.е. x
может быть чем-то вроде x = 'device_id=5'
, тогда вы можете сделать следующее:
x = 'device_id=5'
temp_list = x.split('=')
Теперь, когда вы отделили ключевое слово и значение от выражения, вы можете использовать temp_list
внутри метода фильтра следующим образом, распаковывая словарь, созданный на месте:
DeviceData.objects.filter(**{temp_list[0]: temp_list[1]})
Для кейса x
равно None
или есть другая проблема со значением ключевых слов внутри x
, вы можете обработать эти исключения следующим образом (следуя подходу EAFP):
x = 'device_id=5'
try:
temp_list = x.split('=')
qs = DeviceData.objects.filter(**{temp_list[0]: temp_list[1]})
except (ValueError, TypeError, AttributeError) as e:
qs = DeviceData.objects.all()