如何创建动态RAW Queryset

时间:2018-05-25 08:15:43

标签: django django-queryset

我想创建一个动态的Raw Queryset。

默认情况下,原始查询集如下所示:

qs = self.raw(
            'SELECT DISTINCT ON(P.slug) P.id, P.slug, P.company_id, I.image, 
            'FROM product AS P ' ....

可以使用条件创建查询集。我不是指像Where这样的数据库条件,而是指像if

这样的python条件

类似的东西:

'SELECT DISTINCT ON(P.slug) P.id, P.slug, P.company_id, I.image, 
                'FROM product AS P ' # if var_a Limit 20 else where P.id = var_b

1 个答案:

答案 0 :(得分:1)

只需使用简单的python if / else:

query = 'SELECT DISTINCT ON(P.slug) P.id, P.slug, P.company_id, I.image FROM product AS P '
params = []
if var_a:
    query += 'LIMIT 20'
else:
    query += 'WHERE P.id = %s'
    params.append(var_b)

qs = self.raw(query, params)