在django shell中:
>>> queryset = Song.objects.all()
>>> a=queryset.order_by('?')
>>> queryset
[<Song: Up All Night>, <Song: 1973>, <Song: The Luckiest>, <Song: Another Love>, <Song: Face the Sun>]
>>> a
[<Song: The Luckiest>, <Song: 1973>, <Song: Face the Sun>, <Song: Another Love>, <Song: Up All Night>]
>>> a[0].name
'1973'
你看,最后两个输出互相矛盾
再打几次
a[0]
(或a
)。您会注意到它每次都随机地洗牌元素。这是因为a
指向queryset
,而不是list
要理解
queryset
每次都重新排序的原因,请设想以下场景:您需要按字母顺序从集合中获取所有元素。然而,元素不断地被添加到集合中。如果每次访问查询集时它们都没有按顺序排列,则有可能使最近添加的元素出现无序如果您想以随机顺序获得元素列表(而不是每次抓取一个元素时让它们乱序),您可以使用
相关问题 更多 >
编程相关推荐