每次我想要模型中的一些数据时,我都会得到一个queryset对象。 所以当我说
"items = Items.object.get(value=value)"
我得到-
"<QuerySet [<Item-name>]>"
我必须遍历queryset对象以获取数据,而我使用
"items[0]"
有什么办法可以避免这种情况吗?
编辑:我是说"items = Items.object.filter(value=value)"
答案 0 :(得分:1)
您误会了。 items = Items.object.get(value=value)
不会给您一个查询集,而是一个对象。 items = Items.object.filter(value=value)
会给你一个查询集。
Filter方法将始终为您提供一个查询集,因为;为了最大程度地减少数据库命中的需求,django认为您可以在代码中添加其他过滤器。因此,如果您不执行该查询集,例如通过使用list(your_queryset)
django永远不会访问数据库。
答案 1 :(得分:0)
# when you are using 'get' in your query, you don't need to iterate, directly get an access to the field values
try:
items = Items.object.get(value=value)
except Items.DoesNotExist:
items = None
if items:
print(items.value)
答案 2 :(得分:-1)
首先items = Items.object.get(value=value)
不返回查询集,
而是返回<QuerySet [<Item-name>]>
要从对象获取第一个(或仅一个结果)或最后一个日期,请执行此items.first
或items.last()
要获取所需数据而不使用其索引位置,则可以对其进行过滤以返回类似items.filter(value=value)
的查询集