# 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(