【问题标题】:How to fetch data while ignoring some specific fields?如何在忽略某些特定字段的同时获取数据?
【发布时间】:2018-11-12 09:59:36
【问题描述】:

当我执行以下查询时,对于一个名为 content 的字段使用 MarkDown 的模型 Book

Book.objects.filter(published=True).order_by('read')

网站因为内容字段而变慢,我认为当 Django 尝试将这些字段转换为 python 对象时会发生艰苦的工作。当我清理每条记录的所有 content 字段并将它们留空时,查询速度要快得多。

在我的情况下,content 字段包含大文本。为了提高性能,如何通过忽略特定字段来获取数据?

我想忽略content 字段,例如:

Book.objects.filter(published=True)<b>#.ignore_fields('content',)</b>.order_by('read')

【问题讨论】:

    标签: django performance django-models django-queryset


    【解决方案1】:

    尝试使用defer:

    Book.objects.defer('content').filter(published=True).order_by('read')
    

    【讨论】:

    • 我怎么能错过文档中的那个!!!!无论如何,谢谢。从文档中阅读defer() 部分后,我认为通过在filter() 之后使用defer(),你实际上什么也没做,它将获取content,它应该在filter()Book.objects.defer('content').filter(published=True) 之前。非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-04
    • 1970-01-01
    • 1970-01-01
    • 2016-10-19
    • 1970-01-01
    相关资源
    最近更新 更多