我需要在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])
但是由于最后添加了,所以我必须进行两次检查:
这意味着我两次进行相同的检查,并且我至少有5次检查,因此,如果可能的话,可以避免重复检查(ifs)