我想选择带有多个标签的文章;
url(r"^tagged/(?P<tags>[+]*\w+)$", views.tagged, name="tagged"),
请求的行为类似于“ article / tagged / python + django”
在views.py中,确定标签的长度并找到合格的文章
def tagged(request, tags):
tags = tags.split("+")
if len(tags) == 1:
articles = Article.objects
.filter(tags__name=tags[0])
if len(tags) == 2:
articles = Article.objects
.filter(tags__name=tags[0])
.filter(tags__name=tags[1])
if len(tags) == 3:
articles = Article.objects
.filter(tags__name=tags[0])
.filter(tags__name=tags[1])
.filter(tags__name=tags[2])
if ...
倍数看起来很笨拙,我该如何使用通用函数来处理标签的任意长度来解决问题。
答案 0 :(得分:1)
您可以使用for
循环来逐一应用标签:
def tagged(request, tags):
tags = tags.split("+")
articles = Article.objects.all()
for tag in tags:
articles = articles.filter(tags__name=tag)