Django清理接收用户输入的Raw Queryset

时间:2018-11-03 07:35:59

标签: django django-queryset

我需要在Django中进行RAW查询,并且需要清理输入。

我从基本字符串开始创建查询:

qs_str = 'SELECT c.name, l.adds FROM company inner join lace ...WHERE..'

然后根据我修改的多个条件:

if x:
  qs_str = ' '.join([qs_str, 'AND alpha=true '])
if self.request.GET.get('q'):
 qs_str = ' '.join([qs_str, 'AND name=self.request.GET.get('q')])
if self.request.GET.get('ct'):
 ...

然后我创建查询集:

 qs = Company.objects.raw(qs_str)

根据某些内部变量并取决于用户输入来修改查询。当然,我需要清理用户输入。

我知道您可以在Raw Queryset中声明变量

name = %s'AND ads = %s, [lname, adds])

但是由于最后添加了,所以我必须进行两次检查:

  1. 第一次创建查询
  2. 第二次,以检查查询之后要添加哪些变量

这意味着我两次进行相同的检查,并且我至少有5次检查,因此,如果可能的话,可以避免重复检查(ifs)

0 个答案:

没有答案