Django:从GET请求生成查询集

Django:从GET请求生成查询集,第1张

概述我使用GET方法设置了Django表单.每个值对应于Django模型的属性.什么是生成查询的最优雅方式?目前这是我在视图中所做的: def search_items(request): if 'search_name' in request.GET: query_attributes = {} query_attributes['color'] = req 我使用GET方法设置了Django表单.每个值对应于Django模型的属性.什么是生成查询的最优雅方式?目前这是我在视图中所做的:

def search_items(request):    if 'search_name' in request.GET:        query_attributes = {}        query_attributes['color'] = request.GET.get('color','')        if not query_attributes['color']: del query_attributes['color']        query_attributes['shape'] = request.GET.get('shape','')        if not query_attributes['shape']: del query_attributes['shape']        items = Items.objects.filter(**query_attributes)

但我很确定有更好的方法可以解决这个问题.

解决方法 您可以使用列表comp和“感兴趣的参数”设置:

def search_items(request):    if 'search_name' in request.GET:        interested_params = ('color','shape')        query_attrs = dict([(param,val) for param,val in request.GET.iteritems()                             if param in interested_params and val])        items = Items.objects.filter(**query_attrs)

只是为了好玩(也就是说实际上并不这样做)你可以在一行中完成:

def search_items(request):    items = Items.objects.filter(        **dict([(param,val in request.GET.iteritems()                 if param in ('color','shape') and val])    ) if 'search_name' in request.GET else None
总结

以上是内存溢出为你收集整理的Django:从GET请求生成查询集全部内容,希望文章能够帮你解决Django:从GET请求生成查询集所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1192441.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存