File tree Expand file tree Collapse file tree 2 files changed +35
-4
lines changed
tests/regressiontests/mongodb Expand file tree Collapse file tree 2 files changed +35
-4
lines changed Original file line number Diff line number Diff line change
1
+ from pymongo import ASCENDING , DESCENDING
2
+
1
3
from django .db .models .sql .datastructures import FullResultSet
2
4
3
5
@@ -62,10 +64,15 @@ def build_query(self, aggregates=False):
62
64
assert not self .query .extra
63
65
assert not self .query .having
64
66
assert self .query .high_mark is None
65
- assert not self .query .order_by
66
67
67
68
filters = self .get_filters (self .query .where )
68
- return self .connection .db [self .query .model ._meta .db_table ].find (filters )
69
+ cursor = self .connection .db [self .query .model ._meta .db_table ].find (filters )
70
+ if self .query .order_by :
71
+ cursor = cursor .sort ([
72
+ (ordering .lstrip ("-" ), DESCENDING if ordering .startswith ("-" ) else ASCENDING )
73
+ for ordering in self .query .order_by
74
+ ])
75
+ return cursor
69
76
70
77
def results_iter (self ):
71
78
query = self .build_query ()
Original file line number Diff line number Diff line change @@ -63,15 +63,39 @@ def test_exists(self):
63
63
Artist .objects .create (name = "Brian May" )
64
64
self .assertTrue (Artist .objects .filter (name = "Brian May" ).exists ())
65
65
66
+ def test_orderby (self ):
67
+ Group .objects .create (name = "Queen" , year_formed = 1971 )
68
+ Group .objects .create (name = "The E Street Band" , year_formed = 1972 )
69
+ Group .objects .create (name = "The Beatles" , year_formed = 1960 )
70
+
71
+ self .assertQuerysetEqual (
72
+ Group .objects .order_by ("year_formed" ), [
73
+ "The Beatles" ,
74
+ "Queen" ,
75
+ "The E Street Band" ,
76
+ ],
77
+ lambda g : g .name
78
+ )
79
+
80
+ self .assertQuerysetEqual (
81
+ Group .objects .order_by ("-year_formed" ), [
82
+ "The E Street Band" ,
83
+ "Queen" ,
84
+ "The Beatles" ,
85
+ ],
86
+ lambda g : g .name ,
87
+ )
88
+
89
+
66
90
def test_not_equals (self ):
67
91
q = Group .objects .create (name = "Queen" , year_formed = 1971 )
68
92
e = Group .objects .create (name = "The E Street Band" , year_formed = 1972 )
69
- b = Group .objects .create (name = "The Beetles " )
93
+ b = Group .objects .create (name = "The Beatles " )
70
94
71
95
self .assertQuerysetEqual (
72
96
Group .objects .exclude (year_formed = 1972 ), [
73
97
"Queen" ,
74
- "The Beetles " ,
98
+ "The Beatles " ,
75
99
],
76
100
lambda g : g .name ,
77
101
)
You can’t perform that action at this time.
0 commit comments