Short Question
连接到PostgreSQL数据库时,从Django过滤器调用返回的列表的默认顺序是什么?从Django过滤器调用返回的列表的默认顺序是什么?
背景
通过我自己也承认,我有提出在应用一个糟糕的假设层,在其返回一个列表中的顺序将是常数,即不使用“ORDER_BY”。我查询的项目列表不是按照字母顺序或其他任何故意的顺序。它被认为保持与它们被添加到数据库中的顺序相同。
这种假设数百查询召开真实的,但一个故障报告了我的应用程序时的顺序不知不觉改变。据我所知,在这段时间内没有任何这些记录被触动,因为我是维护数据库的唯一人员。为了增加混淆,在Mac OS X上运行Django应用程序时,它仍然按预期工作,但在Win XP上,它改变了顺序。 (请注意,提到的数百个查询是在Win XP上)。
任何有识之士这将是有益的,因为我无法找到解释操作系统的差异的Django或PostgreSQL文档中的任何东西。
如通话
required_tests = Card_Test.objects.using(get_database()).filter(name__icontains=key)
编辑
一些同事我的今天来说,我想出了相同的答案比约恩·林奎斯特。
回想起来,我肯定明白这是为什么错了,所以经常做。使用ORM Django,sqlalchemy或其他的好处之一是你可以编写命令,而不必知道或详细了解它所连接的数据库。无可否认,我恰好是这些用户之一。然而,另一方面,如果不详细地了解数据库,调试这样的错误非常麻烦并且可能是灾难性的。
尼斯公司交付:) – kronosapiens