Code

Opened 5 years ago

Closed 4 years ago

Last modified 3 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 5 years ago.
django-select-related-join-chain.diff (2.5 KB) - added by Alex 4 years ago.

Download all attachments as: .zip

Change History (8)

Changed 5 years ago by embe

comment:1 Changed 5 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 4 years ago by russellm

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

Changed 4 years ago by Alex

comment:3 Changed 4 years ago by Alex

  • Triage Stage changed from Accepted to Ready for checkin

comment:4 Changed 4 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 4 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 3 years ago by jacob

  • milestone 1.2 deleted

Milestone 1.2 deleted

Add Comment

Modify Ticket

Change Properties
<Author field>
Action
as closed
as The resolution will be set. Next status will be 'closed'
The resolution will be deleted. Next status will be 'new'
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.