如何在django中查询多列

gad*_*dss 1 python sql django

我在django中显示模型中的特定列时遇到问题...我在文档中读到了关于django的queryset功能.我的问题是,在django中也可以像这个查询一样运行吗?

select name, age, address from person;
Run Code Online (Sandbox Code Playgroud)

任何人都可以给我一个想法,我也尝试这样

Mymodel.objects.get(name, age, address)
Run Code Online (Sandbox Code Playgroud)

但是名称,年龄和地址参数有误...

谢谢...

DrT*_*rsa 10

如果您只想使用一些列only:

Mymodel.objects.only('name', 'age', 'address')
Run Code Online (Sandbox Code Playgroud)

如果您不想使用某些列defer:

Mymodel.objects.defer('some_big_field')
Run Code Online (Sandbox Code Playgroud)

你仍然可以访问你没有查询的字段,但它会花费你一个模式数据库命中.

您也可以使用valuesvalues_list方法,但它们不是模型实例,而是分别返回dicts列表和列表列表.


sec*_*ond 5

有几种不同的方法。django 通常将数据包装在模型实例中,这是 orm 要点的一部分。你处理对象,django 处理数据库。所以

for person in MyMydel.objects.all():
    do_something_with(person.name)
Run Code Online (Sandbox Code Playgroud)

话虽如此,如果您只想要某些属性,例如为了性能,您可以使用

MyMode.objects.values('name', 'age', 'address')
Run Code Online (Sandbox Code Playgroud)

它返回具有这些值的字典列表