Никогда, никогда, никогда, никогда не создавайте такие параметры SQL.На самом деле, это так важно, я собираюсь сказать это еще раз: никогда, никогда, никогда, никогда, никогда не создавайте параметры SQL подобным образом.Вы широко открылись для атаки SQL-инъекцией: что произойдет, если кто-то отправит "foo'; DELETE FROM pr;"
в ваше поле pr_name
?Правильно, база данных точно выполнит две команды и удалит вашу таблицу pr.
Обычно Django защищает вас от этого, правильно экранируя все входные данные для команд SQL.По какой-то причине вы решили обойти ORM: теперь, иногда вам нужно, чтобы формулировать сложные запросы, но в запросах, показанных выше, нет ничего сложного.
Вы должны делать что-то вроде этого:
group_query = Group.objects.all()
group_name = form.cleaned_data['group_name']
if group_name:
group_query = group_query.filter(name__icontains=group_name)
org = form.cleaned_data['org']
if org:
group_query = group_query.filter(org__name=org)
и т. Д.