Exclude field from values() or values_list()

2019-07-02 06:21发布

Is there an efficient way to exclude fields from the function values() or values_list.

e.g

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

I want to exclude from this queryset the field duration.

I know that I can specify fields what I want to have in the result but what if I want everything but only one field not. Like in the cases if I have 20 fields and if I want only one from them not.

Thanks

2条回答
混吃等死
2楼-- · 2019-07-02 06:38

You must use defer This will not add defined fields to your select query.

Videos.objects.filter(...).defer('duration')
查看更多
趁早两清
3楼-- · 2019-07-02 06:46

You can get all fields first, then pop out the fields you do not want:

fields = Video._meta.get_all_field_names()
fields.remove('id')
Video.object.filter(...).values(*fields)
查看更多
登录 后发表回答