【发布时间】:2019-04-26 21:10:47
【问题描述】:
在 Django 2.2 中,我们可以使用 filter() 来获取已创建对象的 QuerySet。使用list(),我可以获得QuerySet 的列表。
为了获得模型的实例,我可以使用函数get(),例如MyModel.objects.all().get(name__exact="John")。但是,get() 函数仅适用于查找单个对象。如果 if 找到 2 个或更多对象,则返回异常:MultipleObjectsReturned get() returned more than one。
由于我需要处理我的模型的多个对象及其属性,我想获取一个对象列表。可能吗?例如,我想从属性名称中包含 John 的所有对象中创建一个年龄列表。
如果没有,我如何从MyModel.objects.all().filter(name__exact="John") 访问返回的查询集的属性(例如年龄)?
谢谢。
【问题讨论】:
-
我不明白你的问题。你已经有点答案了。通过执行
Model.objects.filter(...),您将拥有一个行为类似于列表的查询集。这将按照给定的标准返回多个对象。如果您需要一个显式列表,您可以将该查询集包装在list()中,就像您已经知道的那样。您可以遍历您的查询集并处理您需要的内容。 -
好吧,我不知道 QuerySet 的行为就像一个列表。谢谢 Higor