Opened 6 years ago

Closed 5 years ago

Last modified 4 years ago

#12240 closed (fixed)

select_related doesn't work correctly when mixing nullable and non-nullable keys

Reported by: embe Owned by: nobody
Component: Database layer (models, ORM) Version: 1.1
Severity: Keywords:
Cc: Triage Stage: Ready for checkin
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: UI/UX:

Description

The following models:

class Model1(models.Model):
    x = models.ForeignKey('Model2', null=True)

class Model2(models.Model):
    y = models.ForeignKey('Model3', null=False)

class Model3(models.Model):
    z = models.ForeignKey('Model4', null=False)

class Model4(models.Model):
    q = models.IntegerField()

cause a problem with select_related():

In [4]: models.Model1.objects.select_related('x__y')
Out[4]: [<Model1: Model1 object>]

In [5]: models.Model1.objects.select_related('x__y__z')
Out[5]: []

It look like the fix for #7369 only fixed a case when a single non-nullable ForeignKey is encountered, not when there are two in a row.

Attachments (2)

django-12240.diff (2.2 KB) - added by embe 6 years ago.
django-select-related-join-chain.diff (2.5 KB) - added by Alex 6 years ago.

Download all attachments as: .zip

Change History (8)

Changed 6 years ago by embe

comment:1 Changed 6 years ago by embe

  • Has patch set
  • Needs documentation unset
  • Needs tests unset
  • Patch needs improvement unset

The attached patch fixes the problem for me.

comment:2 Changed 6 years ago by russellm

  • milestone set to 1.2
  • Triage Stage changed from Unreviewed to Accepted

Changed 6 years ago by Alex

comment:3 Changed 6 years ago by Alex

  • Triage Stage changed from Accepted to Ready for checkin

comment:4 Changed 5 years ago by lukeplant

  • Resolution set to fixed
  • Status changed from new to closed

(In [12719]) Fixed #12240 - select_related doesn't work correctly when mixing nullable and non-nullable keys

Thanks to embe for report and Alex for fix.

comment:5 Changed 5 years ago by lukeplant

(In [12720]) [1.1.X] Fixed #12240 - select_related doesn't work correctly when mixing nullable and non-nullable keys

Thanks to embe for report and Alex for fix.

Backport of 12719 from trunk.

comment:6 Changed 4 years ago by jacob

  • milestone 1.2 deleted

Milestone 1.2 deleted

Note: See TracTickets for help on using tickets.
Back to Top