如何在不使用过滤器的情况下获取模型的多个对象?

时间:2019-04-26 21:10:47

标签: django django-queryset

在Django 2.2中,我们可以使用filter()来获得QuerySet的创建对象。使用list(),我可以获得QuerySet的列表。

为了获得模型的实例,我可以使用函数get(),例如MyModel.objects.all().get(name__exact="John")。但是,get()函数仅适用于查找单个对象。如果找到2个或更多对象,则返回异常:MultipleObjectsReturned get() returned more than one

由于我需要处理模型的多个对象及其属性,因此我想获取一个对象列表。可能吗?例如,我想从属性名称中带有John的所有对象创建年龄列表。

如果没有,如何从MyModel.objects.all().filter(name__exact="John")访问返回的QuerySet的属性(例如age)?

谢谢。

1 个答案:

答案 0 :(得分:1)

使用values

instances = MyModel.objects.filter(name__exact="John")
ages = instances.values('id', 'age')

您将获得包含键idage的词典列表。