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请求生成查询集所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)