python - 按类别过滤
问题描述
我想按类别过滤。我有很多类别,它们被翻译成 3 种语言。它们也可以动态添加。现在我按主键过滤,它似乎工作正常,但我需要有默认选择的“全部”类别。如何避免此类别的硬编码值?
def autocomplete(request):
if 'term' in request.GET:
term = request.GET.get('term')
qs = Article.objects.all()
if 'category_id' in request.GET:
category_id = request.GET.get('category_id')
# 4 stands for all category
if category_id != '4':
qs = qs.filter(category__pk=category_id)
qs = qs.filter(name__istartswith=term)
names = []
for article in qs:
names.append(article.name)
return JsonResponse(names, safe=False)
return render(request, 'home.html')
谢谢!
解决方案
你可以像下面的代码那样做:
def autocomplete(request):
term = request.GET.get('term')
category_id = request.GET.get('category_id')
if term:
qs = Article.objects.all()
# Not empty and not 4 stands for all category
if category_id and category_id != '4':
qs = qs.filter(category__pk=category_id)
# filter by term
qs = qs.filter(name__istartswith=term)
# get name values and convert queryset to list
names = list(qs.values_list("name", flat=True))
return JsonResponse(names, safe=False)
return render(request, 'home.html')
推荐阅读
- linux - CopyTruncate 日志轮换机制正在丢弃日志
- r - 如何查看用户是否已兑换凭证然后在 r 中进行实际购买
- laravel - 试图在laravel中获取非对象错误的属性“名称”
- reactjs - 带有 gatsby-plugin-intl 的 Gatsby 语言本地化 Mdx 文件
- python - python webscraping with selenium 重复某些过程
- c# - 如果数据库 ASP.NET CORE 3.1 中不存在图像,如何显示显示默认图像
- python - 如何在 Python 中解析碳日期时间对象并转换为另一种格式
- r - 具有 2 个向量参数的翻转函数
- python - 仅针对特定目录查找所有带有 os.walk 的文件
- google-sheets - 谷歌图表如何显示友好的持续时间标签?