【问题标题】:How to select a specific item in django database如何在 django 数据库中选择特定项目
【发布时间】:2015-02-11 06:55:33
【问题描述】:

如何将以下内容转换为 Django 数据库搜索?

SELECT column1 FROM TABLE 'my_table' WHERE column2 = 'some text'

到目前为止我已经尝试过了,这是错误的语法:

my_table.objects.get(column1,column2 = 'some text')

【问题讨论】:

标签: sql django django-models django-queryset django-orm


【解决方案1】:

通过column2使用get()获取模型实例并检索column1字段的值:

my_table.objects.get(column2='some text').column1

请注意,如果找不到对象,get() 会抛出您可能需要单独处理的 DoesNotExist 异常。另外,如果找到多个对象,会抛出MultipleObjectsReturned异常,这也是你需要提前考虑的问题。


或者,您可以将filter()values() 一起使用:

my_table.objects.filter(column2='some text').values('column1')

这将返回ValuesQuerySet(将其视为字典列表)。

【讨论】:

  • 请注意,如果多行匹配查询,它也会引发MultipleObjectsReturned 错误。在大多数情况下,这是微不足道的,但在这种情况下,column2 可能没有唯一约束并返回多个值。
  • 谢谢,这就是我要找的东西
  • @knbk 这是一个很好的观点,我会添加一个关于它的注释。谢谢!
【解决方案2】:

有几种方法,这里是一种:

obj = my_table.objects.get(column2="any_item").column1

【讨论】:

  • 谢谢你,但这将返回一整行,其中 column2='anyitem' 而我想要该行中的特定项目,特别是 column1 的内容
猜你喜欢
  • 2017-02-16
  • 1970-01-01
  • 2023-01-14
  • 1970-01-01
  • 2021-08-03
  • 2018-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多