gpt4 book ai didi

Django:从 G​​ET 请求生成查询集

转载 作者:行者123 更新时间:2023-12-05 00:05:58 25 4
gpt4 key购买 nike

我有一个使用 GET 方法的 Django 表单设置。每个值对应于 Django 模型的属性。生成查询的最优雅的方式是什么?目前这是我在 View 中所做的:

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)

但我很确定有更好的方法来解决它。

最佳答案

您可以使用列表组合和“感兴趣的参数”集来做到这一点:

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) for param, val in request.GET.iteritems()
if param in ('color', 'shape') and val])
) if 'search_name' in request.GET else None

关于Django:从 G​​ET 请求生成查询集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4011028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com