【问题标题】:Exclude field from values() or values_list()从 values() 或 values_list() 中排除字段
【发布时间】:2013-05-27 02:52:49
【问题描述】:

有没有一种有效的方法可以从函数values()values_list 中排除字段。

例如

Videos.objects.filter(id=1).get().values()

我想从这个查询集中排除字段duration

我知道我可以指定我想要在结果中包含的字段,但是如果我想要所有内容但只有一个字段不想要怎么办。就像我有 20 个字段而我只想要其中一个字段的情况一样。

谢谢

【问题讨论】:

    标签: python django django-models django-orm


    【解决方案1】:

    您必须使用defer 这不会将定义的字段添加到您的select 查询中。

    Videos.objects.filter(...).defer('duration')
    

    【讨论】:

    【解决方案2】:

    可以先获取所有字段,再弹出不想要的字段:

    fields = Video._meta.get_all_field_names()
    fields.remove('id')
    Video.object.filter(...).values(*fields)
    

    【讨论】:

    • 直接获取字段名可以使用:Video._meta.get_all_field_names()
    • get_all_field_names() 方法在不久前被弃用并被删除。现在你必须这样做:[f.name for f in Video._meta.get_fields()],看到这个答案:stackoverflow.com/a/3106314/4744341
    猜你喜欢
    • 2018-07-24
    • 1970-01-01
    • 2014-12-02
    • 1970-01-01
    • 2013-04-18
    • 1970-01-01
    • 1970-01-01
    • 2011-10-26
    • 1970-01-01
    相关资源
    最近更新 更多