【问题标题】:how to query a multiple column in django如何在 django 中查询多列
【发布时间】:2011-12-01 10:10:28
【问题描述】:

我在 django 的模型中显示特定列时遇到问题... 我已阅读有关 django 的查询集功能的文档。 我的问题是在 django 中也可以像这个查询一样运行?

select name, age, address from person;

谁能给我一个想法,我也这样尝试

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

但是姓名、年龄和地址的参数有错误...

谢谢...

【问题讨论】:

    标签: python sql django


    【解决方案1】:

    如果您只想要某些列,请使用 only:

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

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

    Mymodel.objects.defer('some_big_field')
    

    您仍然可以访问尚未查询的字段,但它会花费您一次模式 DB 命中。

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

    【讨论】:

    • +1 对不同方法的很好总结,如果需要完全控制 SQL 语句,可以在模型管理器上使用 raw 方法。
    【解决方案2】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2018-03-26
      • 2013-11-22
      • 2011-11-13
      • 2021-12-22
      • 2021-06-27
      • 2020-07-08
      • 2017-03-09
      • 1970-01-01
      • 2020-04-30
      相关资源
      最近更新 更多