Python 从值()或值列表()中排除字段

Python 从值()或值列表()中排除字段,python,django,django-models,django-orm,Python,Django,Django Models,Django Orm,是否有一种有效的方法从函数values()或values\u list中排除字段 e、 g 我想从该查询中排除字段duration 我知道我可以在结果中指定我想要的字段,但是如果我想要所有的字段,但只有一个字段不想要呢。比如,如果我有20个字段,如果我只想要其中一个字段,那么我就不需要了 谢谢您可以先获取所有字段,然后弹出不需要的字段: fields = Video._meta.get_all_field_names() fields.remove('id') Video.object.filt

是否有一种有效的方法从函数
values()
values\u list
中排除字段

e、 g

我想从该查询中排除字段
duration

我知道我可以在结果中指定我想要的字段,但是如果我想要所有的字段,但只有一个字段不想要呢。比如,如果我有20个字段,如果我只想要其中一个字段,那么我就不需要了


谢谢

您可以先获取所有字段,然后弹出不需要的字段:

fields = Video._meta.get_all_field_names()
fields.remove('id')
Video.object.filter(...).values(*fields)
您必须使用此选项,否则不会将定义的字段添加到
select
查询中

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

要直接获取字段名,您可以使用:
Video.\u meta.get\u all\u field\u names()
get\u all\u field\u names()
方法不久前已被弃用并删除。现在您必须执行以下操作:
[f.name for f in Video.\u meta.get\u fields()]
,请参阅以下答案:在使用
延迟()之前,请阅读:它适用于高级用例。
Videos.objects.filter(...).defer('duration')