Files
app-store-optimization/skills/loki-mode/benchmarks/results/2026-01-05-10-37-54/swebench-loki-patches/django__django-16910.patch

39 lines
2.1 KiB
Diff

# django__django-16910
# Loki Mode Multi-Agent Patch
# Attempts: 1
Based on the architect's analysis and my knowledge of Django internals, I can generate the patch for this issue. The problem is in how `_get_defer_select_mask()` handles reverse OneToOne relations in `django/db/models/sql/query.py`.
--- a/django/db/models/sql/query.py
+++ b/django/db/models/sql/query.py
@@ -763,7 +763,7 @@ class Query(BaseExpression):
field_mask, defer = self._get_defer_select_mask(
opts, mask[field.name], select_mask.get(field) or {}
)
- if field_mask:
+ if field_mask is not None:
select_mask.setdefault(field, {}).update(field_mask)
else:
# Reverse one-to-one relations are not walked since they
@@ -771,11 +771,17 @@ class Query(BaseExpression):
# related instance. However, deferring an existing reverse
# relation is not supported.
try:
- field_name = opts.model._meta.get_field(
- field.name
- ).remote_field.get_cache_name()
- if field_name not in mask:
- continue
+ related_model = field.related_model
+ related_field_name = field.remote_field.get_cache_name()
+ if related_field_name in mask:
+ # Reverse OneToOne with specific fields requested
+ field_mask, defer = self._get_defer_select_mask(
+ related_model._meta, mask[related_field_name], select_mask.get(field) or {}
+ )
+ if field_mask is not None:
+ select_mask.setdefault(field, {}).update(field_mask)
+ continue
except FieldDoesNotExist:
pass
select_mask.setdefault(field, {}).update(