﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
34612	QuerySet.only() doesn't work with select_related() on a reverse OneToOneField relation.	Ian Cubitt	Simon Charette	"On Django 4.2 calling `only()` with `select_related()` on a query using the reverse lookup for a OneToOne relation does not generate the correct query.
All the fields from the related model are still included in the generated SQL.

Sample models:

{{{
#!python
class Main(models.Model):
    main_field_1 = models.CharField(blank=True, max_length=45)
    main_field_2 = models.CharField(blank=True, max_length=45)
    main_field_3 = models.CharField(blank=True, max_length=45)


class Secondary(models.Model):
    main = models.OneToOneField(Main, primary_key=True, related_name='secondary', on_delete=models.CASCADE)
    secondary_field_1 = models.CharField(blank=True, max_length=45)
    secondary_field_2 = models.CharField(blank=True, max_length=45)
    secondary_field_3 = models.CharField(blank=True, max_length=45)
}}}

Sample code:

{{{
#!python
Main.objects.select_related('secondary').only('main_field_1', 'secondary__secondary_field_1')
}}}

Generated query on Django 4.2.1:

{{{
#!sql
SELECT ""bugtest_main"".""id"", ""bugtest_main"".""main_field_1"", ""bugtest_secondary"".""main_id"", ""bugtest_secondary"".""secondary_field_1"", ""bugtest_secondary"".""secondary_field_2"", ""bugtest_secondary"".""secondary_field_3"" FROM ""bugtest_main"" LEFT OUTER JOIN ""bugtest_secondary"" ON (""bugtest_main"".""id"" = ""bugtest_secondary"".""main_id"")
}}}

Generated query on Django 4.1.9:

{{{
#!sql
SELECT ""bugtest_main"".""id"", ""bugtest_main"".""main_field_1"", ""bugtest_secondary"".""main_id"", ""bugtest_secondary"".""secondary_field_1"" FROM ""bugtest_main"" LEFT OUTER JOIN ""bugtest_secondary"" ON (""bugtest_main"".""id"" = ""bugtest_secondary"".""main_id"")
}}}"	Bug	closed	Database layer (models, ORM)	4.2	Release blocker	fixed		Simon Charette	Ready for checkin	1	0	0	0	0	0
