仅当在 Django 中提供查询时才将过滤器应用于查询集
Applying filter to queryset only when query is provided in Django
假设我有一个名为 Article
的模型,其字段为 title
。我有一个方法 return 是该模型的查询集,该方法采用一个名为 query
的可选参数,如果提供该参数,则用于过滤掉查询集。所以像这样:
def get_articles(query=None):
if query:
return Article.objects.filter(title__icontains=query)
else:
return Article.objects.all()
这很好用,但请注意这个方法有两个 return 语句,就像我正在写两个单独的查询一样。有没有办法一次性做到这一点?换句话说,理想的情况是只编写一个查询而不是两个。感谢您的帮助。
您可以将 return
个语句的数量减少到一个:
def get_articles(query=None):
<b>qs</b> = Article.objects.all()
if query:
<b>qs</b> = <b>qs</b>.filter(title__icontains=query)
return <b>qs</b>
假设我有一个名为 Article
的模型,其字段为 title
。我有一个方法 return 是该模型的查询集,该方法采用一个名为 query
的可选参数,如果提供该参数,则用于过滤掉查询集。所以像这样:
def get_articles(query=None):
if query:
return Article.objects.filter(title__icontains=query)
else:
return Article.objects.all()
这很好用,但请注意这个方法有两个 return 语句,就像我正在写两个单独的查询一样。有没有办法一次性做到这一点?换句话说,理想的情况是只编写一个查询而不是两个。感谢您的帮助。
您可以将 return
个语句的数量减少到一个:
def get_articles(query=None):
<b>qs</b> = Article.objects.all()
if query:
<b>qs</b> = <b>qs</b>.filter(title__icontains=query)
return <b>qs</b>