Django-taggit prefetch_相关

2023-12-21

我现在正在构建一个基本的时间记录应用程序,并且有一个使用 django-taggit 的待办事项模型。我的 Todo 模型如下所示:

class Todo(models.Model):
    project = models.ForeignKey(Project)
    description = models.CharField(max_length=300)
    is_done = models.BooleanField(default=False)
    billable = models.BooleanField(default=True)
    date_completed = models.DateTimeField(blank=True, null=True)
    completed_by = models.ForeignKey(User, blank=True, null=True)
    tags = TaggableManager()

    def __unicode__(self):
        return self.description

我正在尝试获取项目中所有待办事项的唯一标签列表,并且我已设法使用集合理解使其工作,但是对于项目中的每个待办事项,我必须查询数据库以获取标签。我的设定理解是:

unique_tags = { tag.name.lower() for todo in project.todo_set.all() for tag in todo.tags.all() }

这工作得很好,但是对于项目中的每个待办事项,它都会运行一个单独的查询来获取所有标签。我想知道是否有任何方法可以执行类似于 prefetch_lated 的操作以避免这些重复查询:

unique_tags = { tag.name.lower() for todo in project.todo_set.all().prefetch_related('tags') for tag in todo.tags.all() }

运行前面的代码会出现错误:

'tags' does not resolve to a item that supports prefetching - this is an invalid parameter to prefetch_related().

我确实看到有人在这里问了一个非常相似的问题:优化 django 查询拉取外键和 django-taggit 关系 https://stackoverflow.com/questions/12204511/optimize-django-query-to-pull-foreign-key-and-django-taggit-relationship但看起来并没有得到明确的答案。我希望有人能帮助我。谢谢!


Taggit 现在支持prefetch_related直接在标记字段上(0.11.0 及更高版本,2013-11-25 发布)。

此功能是在这个拉取请求 https://github.com/alex/django-taggit/pull/140. In 它的测试用例 https://github.com/alex/django-taggit/pull/140/files#diff-61d51a325171d97c8a56e59ea525339bR344,请注意,在使用预取标签后.prefetch_related('tags'),还有 0 个用于列出标签的附加查询。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django-taggit prefetch_相关 的相关文章

随机推荐

  • Webpack SCSS @charset 和 @import 问题

    我的 scss 文件中有以下几行 google fonts url https fonts googleapis com css family Source Sans Pro Lato 300 import url google fonts
  • PDFBox - 如果设置为只读,则不会显示复选框

    我正在使用 PDFBox 生成 PDF 我需要在其中添加一个复选框 该复选框需要预设为选中和只读 但有些怎么行不通 请找到下面的代码 它在 PDF 上添加了复选框 import java io File import java io IOE
  • 使用可以为空的列测试不等式

    所以 我问了一个question https stackoverflow com questions 1833949 why is null not equal to null false今天早上 我没有正确地表达 所以我收到了很多关于为什
  • Flask-admin:将 inline_models 渲染为列表视图?

    我有一个Motion模型有很多Votes 我将投票显示为inline model in flask admin 是否可以将选票呈现为表格 如list view模板 而不是像这样 使用 Flask admin 中的规则 您可以更改创建表单或编
  • 禁止用 ReplaceAll (/.) 进行替换

    来自 Mathematica 自己的文档 g 1 Hold g 1 g n gt n 1 leads to 2 Hold 1 1 我的问题 有没有办法保护子表达式不被 ReplaceAll 替换 我使用复合结构作为变量 例如 v a b 并
  • javascript电子邮件验证检查条件问题

    example
  • 如果数组中的所有值都相同,如何打印字符串

    我有一个保存数字的数组 int tarningar new int 5 当所有数字都相同时 我想打印 OK 例如与类似的东西system out println ok 我努力了if tarningar 1 tarningar 2 tarni
  • 使用 LINQ/扩展方法重复字符串[重复]

    这个问题在这里已经有答案了 只是我正在调查的好奇心 问题是 简单地重复 乘法 有人会说 字符串 字符n times 我知道有可枚举 重复为了这个目标 但我试图在没有它的情况下做到这一点 LINQ在这种情况下似乎毫无用处 因为在query l
  • 使用正则表达式提取文件名

    如果我只想匹配fileName i e in C Directory FileName cs 以某种方式忽略之前的一切FileName cs使用正则表达式 我该怎么做 我需要这个用于我正在开发的编译用户界面 无法使用编程语言 因为它只接受正
  • 如何修复 React Native 中的“找不到模块”.../template.config”错误

    我正在尝试使用 React Native 创建一个新应用程序react native init MyApp但我收到了这个错误 Downloading template Copying template error Error Cannot
  • UISearchbar 不区分大小写?

    在表视图中 我设置了 UISearchBar 设置委托并添加协议 当用户点击一个单词时 一切正常 除了 网球 的搜索与 网球 不同 如何使搜索栏成为不区分大小写的 UISearchBar 这是我的代码 我认为所有事情都会发生 void se
  • 在 Visual Studio 中使用 NumPy

    我下载了http pytools codeplex com http pytools codeplex com Visual Studio 的 Python 工具 以便我可以在 Visual Studio 中编写 Python 问题是当我尝
  • python 中文本的 n 元语法

    我之前的更新post https stackoverflow com questions 49064114 extracting n grams from tweets in python 进行一些更改 假设我有 100 条推文 在这些推文
  • Freemarker 内置换行功能

    在我的代码中 我使用 n 作为换行符 有人建议我需要避免 n 因为这对于不同的操作系统 UNIX Windows 和 MAC 来说是不同的 并且每个操作系统都会以不同的方式解释这个字符 虽然我看到了预期的行为 但任何人都可以建议 我们是否有
  • 使用 C# 解析 XLS 文件时出现问题

    好吧 让我们看看我是否能理解这一点 我写了一个程序来解析 Excel 文件 它运行得很好 我使用以下命令进入文件 string FileToConvert Server MapPath App Data CP ARFJN FLAG XLS
  • jquery-autocomplete 插件搜索

    有这个jquery 自动完成 https github com dyve jquery autocomplete插入 它允许您仅搜索确切的字符串 所以我们可以说这是数据 apple is good apple grows on tree t
  • 32 位和 64 位操作系统中的双字节大小

    有什么区别吗double http msdn microsoft com en us library system double aspx当我在 32 位和 64 位环境中运行我的应用程序时的大小 如果我没记错的话 32位环境中的doubl
  • 为多语言 ASP.NET MVC Web 应用程序设置 CurrentCulture 的最佳位置

    对于多语言 ASP NET MVC 3 Web 应用程序 我正在确定Thread CurrentThread CurrentCulture and Thread CurrentThread CurrentUICulture在控制器工厂上如下
  • 如何在 C++ (gcc) 中获得完全限定的函数名称,_排除_返回类型?

    这个问题 https stackoverflow com questions 6151558 displaying fully qualified name of the function描述了如何使用 PRETTY FUNCTION 获取
  • Django-taggit prefetch_相关

    我现在正在构建一个基本的时间记录应用程序 并且有一个使用 django taggit 的待办事项模型 我的 Todo 模型如下所示 class Todo models Model project models ForeignKey Proj