﻿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
20927	"Include known related fields for subclassed ""QuerySet.only"""	lvo@…	nobody	"I have a model like these:

{{{
#!python
class PNRSegment(models.Model):
    pnr = models.ForeignKey('booking.PassengerNameRecord', related_name=""segments"")
    arrival_datetime = models.DateTimeField()

    objects = PNRSegmentManager()
}}}

Also i wrote my own Manager with own QuerySet:

{{{
#!python
class PNRSegmentManager(models.Manager):
    use_for_related_fields = True

    def get_query_set(self):
        return PNRSegmentQuerySet(self.model, using=self._db)

    def latest_datetime(self):
        return self.get_query_set().latest_datetime()


class PNRSegmentQuerySet(QuerySet):
    def latest_datetime(self):
        try:
            return self.order_by('-arrival_datetime')[0].arrival_datetime
        except IndexError:
            return None

}}}

I noticed that `QuerySet.only` has strange behavior:
{{{
#!python
# When launching pdb into PNRSegmentQuerySet.latest_datetime:
(Pdb) pp self
[<PNRSegment: PNRSegment object>, <PNRSegment: PNRSegment object>]
(Pdb) pp self.count()
2
(Pdb) pp self[0]
<PNRSegment: PNRSegment object>
(Pdb) pp self.only('arrival_datetime').count()
2
(Pdb) pp self.only('arrival_datetime')[0]
*** IndexError: IndexError((""PNRSegment matching query does not exist. Lookup parameters were {'pk': None}"",),)
}}}

After tracing of `QuerySet.clone` i found my error: when subclassing QuerySet for related manager, each `QuerySet.only` call should contain related field:
{{{
#!python
(Pdb) pp self.only('arrival_datetime', 'pnr')[0]
<PNRSegment_Deferred_airline_code_class_code_ ... cutted ...>
}}}

I think that this is not obvious behaviour. `QuerySet.only` should authomatically include all fields from `QuerySet._known_related_objects`."	Bug	closed	Database layer (models, ORM)	1.5	Normal	wontfix	queryset, only, related manager, manager		Unreviewed	0	0	0	0	0	0
