mirror of
https://github.com/django/django.git
synced 2025-06-03 02:29:13 +00:00
Fixed #36100 -- Checked if composite pk is set in get_next/get_previous.
This commit is contained in:
parent
6cfe00ee43
commit
1602666b79
@ -1299,7 +1299,7 @@ class Model(AltersData, metaclass=ModelBase):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def _get_next_or_previous_by_FIELD(self, field, is_next, **kwargs):
|
def _get_next_or_previous_by_FIELD(self, field, is_next, **kwargs):
|
||||||
if not self.pk:
|
if not self._is_pk_set():
|
||||||
raise ValueError("get_next/get_previous cannot be used on unsaved objects.")
|
raise ValueError("get_next/get_previous cannot be used on unsaved objects.")
|
||||||
op = "gt" if is_next else "lt"
|
op = "gt" if is_next else "lt"
|
||||||
order = "" if is_next else "-"
|
order = "" if is_next else "-"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
|
|
||||||
from .models import Comment, Tenant, User
|
from .models import Comment, Tenant, TimeStamped, User
|
||||||
|
|
||||||
|
|
||||||
class CompositePKGetTests(TestCase):
|
class CompositePKGetTests(TestCase):
|
||||||
@ -124,3 +124,12 @@ class CompositePKGetTests(TestCase):
|
|||||||
|
|
||||||
def test_get_user_by_comments(self):
|
def test_get_user_by_comments(self):
|
||||||
self.assertEqual(User.objects.get(comments=self.comment_1), self.user_1)
|
self.assertEqual(User.objects.get(comments=self.comment_1), self.user_1)
|
||||||
|
|
||||||
|
def test_get_previous_by_field(self):
|
||||||
|
stamp_1 = TimeStamped.objects.create(id=1)
|
||||||
|
stamp_2 = TimeStamped(id=2)
|
||||||
|
msg = "get_next/get_previous cannot be used on unsaved objects."
|
||||||
|
with self.assertRaisesMessage(ValueError, msg):
|
||||||
|
stamp_2.get_previous_by_created()
|
||||||
|
stamp_2.save()
|
||||||
|
self.assertEqual(stamp_2.get_previous_by_created(), stamp_1)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user