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

#python #django #django-models #django-rest-framework #django-orm

Вопрос:

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

Экс:

 json_data = {"postgres_id":"10"}

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

json_data = {"age":"10"}

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

 

Ответ №1:

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

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

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

 { userfield__name='aabbcc' }
 

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