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

2024-02-09

我有一个使用 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) for param, val in request.GET.iteritems() 
                if param in ('color', 'shape') and val])
    ) if 'search_name' in request.GET else None 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django:从 G​​ET 请求生成查询集 的相关文章

随机推荐

  • EditorJS 总是呈现两个编辑器

    我正在尝试使用 EditorJS 的编辑器 一切工作正常 除了当我第一次加载页面时 它会在开始时初始化两个编辑器 并在每次重新加载页面时不断附加新编辑器 但它们都在里面 div div 分区我有什么遗漏的吗 react etc import
  • Webpack Uglify CSS 中的错误

    我强调要让 Uglify 与我的项目一起工作 以前我使用过 Uglify 并且没有出现问题 但现在我认为这与 SASS 相关 ERROR in css loader sass loader app scss global header sc
  • 替换表达式树中的类型

    我正在努力修改表达式树 我简化了示例 以便更容易在此处显示 让我们从两个类开始 public class Filter public string FilterableProperty1 get set public string Filt
  • 选择 * 与选择列

    如果我只需要 2 3 列并且我查询SELECT 与在选择查询中提供这些列不同 更多 更少 I O 或内存是否会导致性能下降 如果我在不需要的情况下选择 则可能会出现网络开销 但是在选择操作中 数据库引擎是否总是从磁盘中提取原子元组 或者只提
  • CMake:如何在 Visual Studio 项目中的“头文件”中显示标题?

    我用 C 创建了一个简单的库项目 并添加了 CMake 文件以自动生成 Visual Studio 项目 我的小项目只包含 2 个文件 include testproject testproject h src testproject cp
  • C# 自增运算符错误:操作数语法不正确?

    我正在看the docs https learn microsoft com en us dotnet csharp language reference operators increment operator并尝试了解操作员的实际工作原
  • ASP.Net WebAPI 区域支持

    我正在尝试向我的 asp net 4 RC 站点添加一些 WebAPI 支持 并希望将其放入一个区域中 我看到有人设法让它在测试版上运行 here http netmvc blogspot co uk 2012 03 aspnet mvc
  • 如何测试 Eclipse 包中的 URL 是否是目录?

    我正在尝试从插件内置的包的内容中填充目录 以下代码在捆绑包是文件系统时有效 但在捆绑包是 JAR 时失败 测试 URL 是否为目录的最佳方法是什么 或者是否有一种完全不同的 更好的方法来从资源包创建文件结构 static private v
  • Android Fragment:使用哪个生命周期方法来调用Web服务

    我正在开发一个涉及多个片段的应用程序 在每个片段中 我必须调用 Web 服务来获取数据 目前我正在从以下位置调用网络服务onCreateView 片段的方法 我收到的问题是 每当 Web 服务调用正在进行时 如果设备方向发生更改 则新的 W
  • 为什么 Azure 部署需要这么长时间?

    我试图理解为什么将一个小型应用程序部署到 Azure 需要 20 60 分钟 使用配置 包上传方法 而不是从 VS 内 我已读完这个情况 http msdn microsoft com en us library ff803362 aspx
  • Kotlin 相当于 Java8 中的Optional::map

    你知道是否有捷径 if x null null else f x 对于JavaOptional你可以这样做 x map SomeClass f Kotlin 利用自己的方法来实现这一想法Option 但是有map filter orElse
  • 如何在 C++ 中生成 UUID,而不使用 boost 库?

    我想为我的应用程序生成 UUID 以区分应用程序的每次安装 我想在没有 boost 库支持的情况下使用 C 生成此 UUID 如何使用其他开源库生成 UUID 注 我的平台是windows 如果您使用现代 C 这就可以了 include
  • 折旧警告不允许在 AZURE 上部署应用程序,

    将应用程序部署到 AZURE 时 我收到以下警告 节点 6568 DEP0064 DeprecationWarning tls createSecurePair 是 已弃用 请改用 tls Socket 但这不允许我的应用程序启动 Azur
  • 如何检索 PCollection 的内容并将其分配给普通变量?

    我正在将 Apache Beam 与 Python SDK 结合使用 目前 我的管道读取多个文件 解析它们并从其数据生成 pandas 数据帧 然后 它将它们分组为single数据框 我现在想要的是检索这个单一的胖数据帧 将其分配给一个普通
  • 当我什至没有使用 Bolts 时,为什么会收到有关 Bolts 框架和 FacebookSDK 的错误?

    出现此错误 framework not found Bolts for architecture x86 64 逐字逐句地遵循 Facebook 的指南 但我能想到的唯一发生链接错误的地方是在框架搜索路径的构建设置中 我目前在应用程序中尝试
  • 如何使用 xargs 复制名称中包含空格和引号的文件?

    我正在尝试复制目录下的一堆文件 其中许多文件的名称中包含空格和单引号 当我尝试串起来时find and grep with xargs 我收到以下错误 find grep FooBar xargs I cp foo bar xargs un
  • 处理无效 XML 的建议方法

    我正在尝试使用 Delphi XE2 将程序与第三方服务集成 我遇到的问题是该服务没有转义它们发送给我的 XML 文档中的任何值 这是他们的 示例 xml 文档之一
  • Ruby、价值分桶、美化代码

    所以我有这个代码 def self age to bucket age age age to i if age gt 0 age lt 12 1 elsif age gt 13 age lt 17 2 elsif age gt 18 age
  • Spring roo多模块依赖

    我刚刚开始第一次玩spring roo 第一印象是相当令人兴奋 目前我正在努力创建多模块项目希望你们能帮助我 假设我有父 POM 和 2 个 Jar 项目以及 1 个 war 项目 让我们将它们命名如下 父级 POM 服务API jar 服
  • Django:从 G​​ET 请求生成查询集

    我有一个使用 GET 方法的 Django 表单设置 每个值对应于 Django 模型的属性 生成查询的最优雅的方式是什么 目前 这就是我在视图中所做的事情 def search items request if search name i