gpt4 book ai didi

python - 初学者 : Examining Queryset results

转载 作者:太空宇宙 更新时间:2023-11-04 08:18:49 24 4
gpt4 key购买 nike

免责声明:我是 python 和 Django 的新手,但有 Drupal 编程经验。

我正在按照这里的教程 (http://www.djangobook.com/en/2.0/chapter05/),但我对

Publisher.objects.filter(name='Apress')
[<Publisher: Apress>]

我知道结果是一个 Queryset 对象,那么当以下方法失败时我如何检索地址(或主键)?

p = Publisher.objects.filter(name='Apress')
a = p.address
'QuerySet' object has no attribute 'address'

谢谢!

最佳答案

属性仅在模型实例上可用。 QuerySet 简单来说就是模型实例的列表,因此您必须以某种方式“解压”它以获取特定实例,然后获取该实例的属性。

如果您知道只有一个您正在查询的内容,您应该使用 get 而不是 filter:

publisher = Publisher.objects.get(name='Apress')
print publisher.address

但是,如果返回多个匹配项,则会引发 MultipleObjectsReturned 异常,相反,如果未找到匹配项,则会引发 ObjectDoesNotExist 异常。因此,在使用 get 时需要小心,并确保将代码包装在适当的 try...except block 中。

如果你正在处理你期望不止一个结果的事情,那么你可以使用某种循环结构来处理 QuerySet 中的每个单独的项目:

for publisher in Publisher.objects.all():
print publisher.address

或者,像使用传统列表一样直接拉出一项:

first_publisher = Publisher.objects.all()[0]
print first_publisher.address

关于python - 初学者 : Examining Queryset results,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9575156/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com