Skip to content

Commit 62b819e

Browse files
committed
update to Django 5.1
1 parent 2d96786 commit 62b819e

File tree

5 files changed

+20
-5
lines changed

5 files changed

+20
-5
lines changed

.github/workflows/test-python.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ jobs:
4747
uses: actions/checkout@v4
4848
with:
4949
repository: 'mongodb-forks/django'
50-
ref: 'mongodb-5.0.x'
50+
ref: 'mongodb-5.1.x'
5151
path: 'django_repo'
5252
- name: Install system packages for Django's Python test dependencies
5353
run: |

django_mongodb/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
__version__ = "5.0a0"
1+
__version__ = "5.1a0"
22

33
# Check Django compatibility before other imports which may fail if the
44
# wrong version of Django is installed.

django_mongodb/aggregates.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from copy import deepcopy
22

33
from django.db.models.aggregates import Aggregate, Count, StdDev, Variance
4-
from django.db.models.expressions import Case, Value, When
4+
from django.db.models.expressions import Case, Col, Value, When
55
from django.db.models.lookups import IsNull
66
from django.db.models.sql.where import WhereNode
77

@@ -19,7 +19,7 @@ def aggregate(
1919
resolve_inner_expression=False,
2020
**extra_context, # noqa: ARG001
2121
):
22-
if self.filter:
22+
if self.filter and not isinstance(self.filter, Col):
2323
node = self.copy()
2424
node.filter = None
2525
source_expressions = node.get_source_expressions()

django_mongodb/features.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,12 @@ class DatabaseFeatures(BaseDatabaseFeatures):
2626
uses_savepoints = False
2727

2828
_django_test_expected_failures = {
29+
# $concat only supports strings, not int
30+
"db_functions.text.test_concat.ConcatTests.test_concat_non_str",
31+
# QuerySet.order_by() with annotation transform doesn't work:
32+
# "Expression $mod takes exactly 2 arguments. 1 were passed in"
33+
# https://github.com/django/django/commit/b0ad41198b3e333f57351e3fce5a1fb47f23f376
34+
"aggregation.tests.AggregateTestCase.test_order_by_aggregate_transform",
2935
# Database defaults not supported: bson.errors.InvalidDocument:
3036
# cannot encode object: <django.db.models.expressions.DatabaseDefault
3137
"basic.tests.ModelInstanceCreationTests.test_save_primary_with_db_default",
@@ -51,7 +57,7 @@ class DatabaseFeatures(BaseDatabaseFeatures):
5157
# Length of null considered zero rather than null.
5258
"db_functions.text.test_length.LengthTests.test_basic",
5359
# range lookup includes incorrect values.
54-
"expressions.tests.IterableLookupInnerExpressionsTests.test_expressions_in_lookups_join_choice",
60+
"expressions.tests.IterableLookupInnerExpressionsTests.test_expressions_range_lookups_join_choice",
5561
# Unexpected alias_refcount in alias_map.
5662
"queries.tests.Queries1Tests.test_order_by_tables",
5763
# The $sum aggregation returns 0 instead of None for null.
@@ -117,6 +123,7 @@ def django_test_expected_failures(self):
117123
"QuerySet.prefetch_related() is not supported on MongoDB.": {
118124
"m2m_through_regress.test_multitable.MultiTableTests.test_m2m_prefetch_proxied",
119125
"m2m_through_regress.test_multitable.MultiTableTests.test_m2m_prefetch_reverse_proxied",
126+
"many_to_many.tests.ManyToManyQueryTests.test_prefetch_related_no_queries_optimization_disabled",
120127
"many_to_many.tests.ManyToManyTests.test_add_after_prefetch",
121128
"many_to_many.tests.ManyToManyTests.test_add_then_remove_after_prefetch",
122129
"many_to_many.tests.ManyToManyTests.test_clear_after_prefetch",
@@ -178,6 +185,7 @@ def django_test_expected_failures(self):
178185
"expressions.tests.BasicExpressionsTests.test_case_in_filter_if_boolean_output_field",
179186
"expressions.tests.BasicExpressionsTests.test_exists_in_filter",
180187
"expressions.tests.BasicExpressionsTests.test_order_by_exists",
188+
"expressions.tests.BasicExpressionsTests.test_slicing_of_outerref",
181189
"expressions.tests.BasicExpressionsTests.test_subquery",
182190
"expressions.tests.ExistsTests.test_filter_by_empty_exists",
183191
"expressions.tests.ExistsTests.test_negated_empty_exists",
@@ -298,6 +306,7 @@ def django_test_expected_failures(self):
298306
"queries.tests.EmptyQuerySetTests.test_values_subquery",
299307
"queries.tests.ExcludeTests.test_exclude_subquery",
300308
"queries.tests.NullInExcludeTest.test_null_in_exclude_qs",
309+
"queries.tests.Queries1Tests.test_combining_does_not_mutate",
301310
"queries.tests.Queries1Tests.test_ticket9985",
302311
"queries.tests.Queries1Tests.test_ticket9997",
303312
"queries.tests.Queries1Tests.test_ticket10742",
@@ -414,7 +423,11 @@ def django_test_expected_failures(self):
414423
"aggregation.tests.AggregateTestCase.test_count_star",
415424
"delete.tests.DeletionTests.test_only_referenced_fields_selected",
416425
"lookup.tests.LookupTests.test_in_ignore_none",
426+
"lookup.tests.LookupTests.test_lookup_direct_value_rhs_unwrapped",
417427
"lookup.tests.LookupTests.test_textfield_exact_null",
428+
"many_to_many.tests.ManyToManyQueryTests.test_count_join_optimization_disabled",
429+
"many_to_many.tests.ManyToManyQueryTests.test_exists_join_optimization_disabled",
430+
"many_to_many.tests.ManyToManyTests.test_custom_default_manager_exists_count",
418431
"queries.tests.ExistsSql.test_exists",
419432
"queries.tests.Queries6Tests.test_col_alias_quoted",
420433
},

django_mongodb/query_utils.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ def process_lhs(node, compiler, connection):
1212
# node is a Func or Expression, possibly with multiple source expressions.
1313
result = []
1414
for expr in node.get_source_expressions():
15+
if expr is None:
16+
continue
1517
try:
1618
result.append(expr.as_mql(compiler, connection))
1719
except FullResultSet:

0 commit comments

Comments
 (0)