如何在Django中查询多个列
我在使用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')
你仍然可以访问那些你没有查询的字段,但这样会多一次数据库的访问。
另外,你还可以使用 values
和 values_list
这两个方法,不过它们返回的不是模型实例,而是字典的列表和列表的列表。
5
有几种不同的方法。Django 通常会把数据包装在模型实例中,这也是 ORM 的一个目的。你处理的是对象,而 Django 则处理数据库。所以
for person in MyMydel.objects.all():
do_something_with(person.name)
这样说来,如果你只想要某些特定的属性,比如为了提高性能,你可以使用 values
MyMode.objects.values('name', 'age', 'address')
这个方法会返回一个包含这些值的字典列表