mirror of
https://github.com/django/django.git
synced 2025-03-06 15:32:33 +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):
|
||||
if not self.pk:
|
||||
if not self._is_pk_set():
|
||||
raise ValueError("get_next/get_previous cannot be used on unsaved objects.")
|
||||
op = "gt" if is_next else "lt"
|
||||
order = "" if is_next else "-"
|
||||
|
@ -1,6 +1,6 @@
|
||||
from django.test import TestCase
|
||||
|
||||
from .models import Comment, Tenant, User
|
||||
from .models import Comment, Tenant, TimeStamped, User
|
||||
|
||||
|
||||
class CompositePKGetTests(TestCase):
|
||||
@ -124,3 +124,12 @@ class CompositePKGetTests(TestCase):
|
||||
|
||||
def test_get_user_by_comments(self):
|
||||
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