2011-12-01 76 views
1

我在Django的模型中显示特定列时遇到问题... 我已阅读有关Django的queryset功能的文档。 我的问题是,它也可能在Django运行就像这个查询?如何在Django中查询多列

select name, age, address from person; 

可谁能给我一个想法,我也试着像这样

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

但也有错误的姓名,年龄和地址的参数...

感谢。 ..

回答

3

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

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

如果你只想要某些属性,例如性能,您可以使用values

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

如果你想只有一些列使用only返回类型的字典使用这些值

9

列表:

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

如果不想某些栏目使用defer

Mymodel.objects.defer('some_big_field') 

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

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

+0

+1不同方法的不错总结,如果需要完全控制SQL语句,可以使用['raw'](https://docs.djangoproject.com/en/dev/topics/db/sql/ #django.db.models.Manager.raw)方法在模型管理器上。 –