Django RawQuerySet
Я пытаюсь сделать RawQuerySet в моей модели django, но он не возвращает никаких данных. Я делаю этот запрос непосредственно к базе данных и он работает хорошо, но в django RawQuerySet ничего не возвращается.
Вы можете мне помочь?
data_in = "'2022-05-15'"
data_out = "'2022-08-20'"
id_estudo = 1
query = f'''SELECT ag.id, dia, first_name, last_name, descricao, modelo, serialNumber, acronimo
FROM model_1 ag,model_2 ma, model_3 user, model_4 es
ON ag.model_2_id = ma.id AND ag.model_3_id = user.id AND ag.model_4_id = es.id
WHERE dia BETWEEN {data_in} and {data_out} AND es.id = {ester_id};
'''
return Model.objects.raw(query)
Никогда не используйте формат f string для выполнения rawquery, он уязвим для sql-инъекций
сделайте это,
>>> lname = 'Doe'
>>> Person.objects.raw('SELECT * FROM myapp_person WHERE last_name = %s', [lname])
Также если вам нужно отображение на имя колонки,
>>> name_map = {'first': 'first_name', 'last': 'last_name', 'bd': 'birth_date', 'pk': 'id'}
>>> Person.objects.raw('SELECT * FROM some_other_table', translations=name_map)
Django Documentation - https://docs.djangoproject.com/en/3.2/topics/db/sql/