作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在运行此代码:
city_state_location = (
Location.objects.filter(city=city, state=state)
.values_list("city")
.annotate(long=Avg("longitude"), lat=Avg("latitude"))
)
print(
city_state_location,
city_state_location[0],
city_state_location.first(),
len(city_state_location),
)
哪些输出:
<QuerySet [('New York', -73.9422666666667, 40.8382)]>
('New York', -73.9422666666667, 40.8382)
('New York', -73.9501, 40.8252)
1
为什么会发生这种情况?查询集只包含一个元素,所以我很困惑为什么索引第一个元素与调用 .first() 不同
最佳答案
Why does this happen?
.first()
和
[0]
是不同的。确实,
.first()
将添加
.order_by('pk')
子句,以防您没有正确排序查询集,因此没有
GROUP BY city
,因为主键是排序过程的一部分,所以第一项只是第一个
Location
满足给定过滤条件的按主键排序的对象,以及
Avg('longitude')
和
Avg('latitude')
.事实上,如果我们看一下
source code of .first()
[GitHub] , 我们看:
def first(self):
"""Return the first object of a query or None if no match is found."""
for obj in (self if self.ordered else self.order_by('pk'))[:1]:
return obj
[0]
另一方面,不会添加额外的
.order_by('pk')
,因此返回的项目是满足过滤条件的第一组项目的项目,因此将确定指向
'New York'
的所有项目的平均值。在这种情况下。
city_state_location.order_by('pk')[0]
,然后会发生与使用
.first()
相同的情况.
关于django - 对于单个元素的查询集,索引 (query_set[0]) 和 query_set.first() 的第 0 个元素会给出不同的值 - Django 2.2.7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68809625/
我有一个 Django 应用程序,其中包含有关学校和州的信息。我希望我的模板显示每个州的学校列表,以及基于 URL 中的州参数的州名称。因此,如果用户访问 example.com/vermont/,他
我正在运行此代码: city_state_location = ( Location.objects.filter(city=city, state=state
众所周知,我们可以使用model_to_dict将query_set转换为字典。 from django.forms.models import model_to_dict u = User.obje
我选择了包含国家名称的“values_list”字段。但我得到的是 country_id 号码。 我已经使用了 flat=True 但它没有任何帮助。 我的模型.py: class Report(mo
我是一名优秀的程序员,十分优秀!