Refs #27118 -- Reallowed using pk in QuerySet.get/update_or_create().
This commit is contained in:
parent
040bd7c938
commit
1db1f74617
|
@ -532,7 +532,8 @@ class QuerySet(object):
|
|||
try:
|
||||
self.model._meta.get_field(param)
|
||||
except exceptions.FieldDoesNotExist:
|
||||
invalid_params.append(param)
|
||||
if param != 'pk': # It's okay to use a model's pk property.
|
||||
invalid_params.append(param)
|
||||
if invalid_params:
|
||||
raise exceptions.FieldError(
|
||||
"Invalid field name(s) for model %s: '%s'." % (
|
||||
|
|
|
@ -71,6 +71,12 @@ class GetOrCreateTests(TestCase):
|
|||
with self.assertRaises(IntegrityError):
|
||||
Person.objects.get_or_create(first_name="Tom", last_name="Smith")
|
||||
|
||||
def test_get_or_create_with_pk_property(self):
|
||||
"""
|
||||
Using the pk property of a model is allowed.
|
||||
"""
|
||||
Thing.objects.get_or_create(pk=1)
|
||||
|
||||
def test_get_or_create_on_related_manager(self):
|
||||
p = Publisher.objects.create(name="Acme Publishing")
|
||||
# Create a book through the publisher.
|
||||
|
@ -324,6 +330,12 @@ class UpdateOrCreateTests(TestCase):
|
|||
ManualPrimaryKeyTest.objects.update_or_create(id=1, data="Different")
|
||||
self.assertEqual(ManualPrimaryKeyTest.objects.get(id=1).data, "Original")
|
||||
|
||||
def test_with_pk_property(self):
|
||||
"""
|
||||
Using the pk property of a model is allowed.
|
||||
"""
|
||||
Thing.objects.update_or_create(pk=1)
|
||||
|
||||
def test_error_contains_full_traceback(self):
|
||||
"""
|
||||
update_or_create should raise IntegrityErrors with the full traceback.
|
||||
|
|
Loading…
Reference in New Issue