Kaydet (Commit) e07def14 authored tarafından Tim Graham's avatar Tim Graham

Refs #25786 -- Added tests/release notes for set_FOO_order() crash with…

Refs #25786 -- Added tests/release notes for set_FOO_order() crash with order_with_respect_to referencing OneToOneField pk.

Forwardport of 6d9f061b from stable/1.8.x
The issue was fixed by 7bec480f.
üst 8091e8c5
...@@ -42,3 +42,7 @@ Bugfixes ...@@ -42,3 +42,7 @@ Bugfixes
* Fixed a duplicate query regression in 1.8 on proxied model deletion * Fixed a duplicate query regression in 1.8 on proxied model deletion
(:ticket:`25685`). (:ticket:`25685`).
* Fixed ``set_FOO_order()`` crash when the ``ForeignKey`` of a model with
``order_with_respect_to`` references a model with a ``OneToOneField``
primary key (:ticket:`25786`).
...@@ -42,3 +42,19 @@ class Post(models.Model): ...@@ -42,3 +42,19 @@ class Post(models.Model):
def __str__(self): def __str__(self):
return self.title return self.title
# order_with_respect_to points to a model with a OneToOneField primary key.
class Entity(models.Model):
pass
class Dimension(models.Model):
entity = models.OneToOneField('Entity', primary_key=True, on_delete=models.CASCADE)
class Component(models.Model):
dimension = models.ForeignKey('Dimension', on_delete=models.CASCADE)
class Meta:
order_with_respect_to = 'dimension'
...@@ -6,7 +6,7 @@ from django.apps.registry import Apps ...@@ -6,7 +6,7 @@ from django.apps.registry import Apps
from django.db import models from django.db import models
from django.test import TestCase from django.test import TestCase
from .models import Answer, Post, Question from .models import Answer, Dimension, Entity, Post, Question
class OrderWithRespectToTests(TestCase): class OrderWithRespectToTests(TestCase):
...@@ -118,3 +118,13 @@ class OrderWithRespectToTests2(TestCase): ...@@ -118,3 +118,13 @@ class OrderWithRespectToTests2(TestCase):
count += 1 count += 1
self.assertEqual(count, 1) self.assertEqual(count, 1)
class TestOrderWithRespectToOneToOnePK(TestCase):
def test_set_order(self):
e = Entity.objects.create()
d = Dimension.objects.create(entity=e)
c1 = d.component_set.create()
c2 = d.component_set.create()
d.set_component_order([c1.id, c2.id])
self.assertQuerysetEqual(d.component_set.all(), [c1.id, c2.id], attrgetter('pk'))
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment