Как выполнить запрос django orm без использования имени поля?

У меня есть один json-данный, который содержит имя поля модели как json-ключ со значением. Я хочу выполнить запрос orm и определить имя поля во время выполнения.

Ex:

json_data = {"postgres_id":"10"}

query = AcronymSecurityControlMaster.objects.get(postgres_id=10) 

json_data = {"age":"10"}

query = AcronymSecurityControlMaster.objects.get(age=10) 

Вы можете использовать распаковку словаря для передачи словаря в качестве именованных параметров вызова функции:

json_data = {"age": 10}
#                           dictionary unpacking ↓↓
query = AcronymSecurityControlMaster.objects.get(**json_data)

Однако вы должны убедиться, что json_data не содержит уязвимостей безопасности. Например, пользователь может попытаться "угадать" конфиденциальные данные с помощью:

{ userfield__name='aabbcc' }

где вы, возможно, не хотите делиться именем пользователя.

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