如何在Django中查询多个列

1 投票
2 回答
7953 浏览
提问于 2025-04-17 07:27

我在使用Django的时候遇到了一个问题,想要在我的模型中显示特定的列... 我在文档中看过关于Django的查询集(queryset)功能的介绍。我的问题是,Django是否也可以像这样运行查询呢?

select name, age, address from person;

有没有人能给我一些建议,我也试过这样做

Mymodel.objects.get(name, age, address)

但是在名称、年龄和地址这些参数上出现了错误...

谢谢...

2 个回答

10

如果你只想要某些列,可以使用 only 这个方法:

Mymodel.objects.only('name', 'age', 'address')

如果你 不想要 某些列,可以使用 defer 这个方法:

Mymodel.objects.defer('some_big_field')

你仍然可以访问那些你没有查询的字段,但这样会多一次数据库的访问。

另外,你还可以使用 valuesvalues_list 这两个方法,不过它们返回的不是模型实例,而是字典的列表和列表的列表。

5

有几种不同的方法。Django 通常会把数据包装在模型实例中,这也是 ORM 的一个目的。你处理的是对象,而 Django 则处理数据库。所以

for person in MyMydel.objects.all():
    do_something_with(person.name)

这样说来,如果你只想要某些特定的属性,比如为了提高性能,你可以使用 values

MyMode.objects.values('name', 'age', 'address')

这个方法会返回一个包含这些值的字典列表

撰写回答