You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django中查询Tld表,仅获取匹配条件的对象主键值?

如何在Django中仅查询模型的主键值

嘿,这个需求用Django ORM就能轻松搞定,我给你梳理几个最实用的实现方案:

1. 使用values_list(最推荐)

这是最贴合你需求的方式,指定要获取的字段为id,再加上flat=True参数,就能得到一个只包含主键值的可迭代QuerySet:

# 获取符合条件的所有主键值的QuerySet
id_queryset = Model.objects.filter(d=bu).values_list('id', flat=True)

# 如果需要转换成普通Python列表,直接用list()包裹即可
id_list = list(id_queryset)

这段代码对应的原生SQL就是你提到的SELECT id FROM model WHERE d = <buv>,完全匹配你的预期。

2. 适配自定义主键的通用写法

如果你的模型没有用默认的id作为主键(比如自定义了主键字段),可以通过模型的_meta属性动态获取主键名,让代码更通用:

# 动态获取模型的主键字段名
pk_field_name = Model._meta.pk.name
# 查询并获取主键值
id_queryset = Model.objects.filter(d=bu).values_list(pk_field_name, flat=True)

小提醒:别混淆values和values_list

如果用values('id')的话,返回的是字典组成的列表(比如[{'id': 1}, {'id': 2}]),这和你要的纯主键值列表不一样,所以优先选values_list(flat=True)。

内容的提问来源于stack exchange,提问作者Walley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:53:30