diff --git a/django/db/models/base.py b/django/db/models/base.py index e4ef6e5495..949b1697fc 100644 --- a/django/db/models/base.py +++ b/django/db/models/base.py @@ -505,7 +505,7 @@ class Model(metaclass=ModelBase): return '<%s: %s>' % (self.__class__.__name__, u) def __str__(self): - return '%s object' % self.__class__.__name__ + return '%s object (%s)' % (self.__class__.__name__, self.pk) def __eq__(self, other): if not isinstance(other, Model): diff --git a/docs/intro/tutorial02.txt b/docs/intro/tutorial02.txt index 48e4ac7e7d..5eca45ee09 100644 --- a/docs/intro/tutorial02.txt +++ b/docs/intro/tutorial02.txt @@ -437,11 +437,11 @@ Once you're in the shell, explore the :doc:`database API `:: # objects.all() displays all the questions in the database. >>> Question.objects.all() - ]> + ]> -Wait a minute. ```` is, utterly, an unhelpful representation -of this object. Let's fix that by editing the ``Question`` model (in the -``polls/models.py`` file) and adding a +Wait a minute. ```` isn't a helpful +representation of this object. Let's fix that by editing the ``Question`` model +(in the ``polls/models.py`` file) and adding a :meth:`~django.db.models.Model.__str__` method to both ``Question`` and ``Choice``: diff --git a/docs/releases/2.0.txt b/docs/releases/2.0.txt index de5559a7eb..5214b3f2f5 100644 --- a/docs/releases/2.0.txt +++ b/docs/releases/2.0.txt @@ -441,6 +441,9 @@ Miscellaneous :class:`~django.views.i18n.JavaScriptCatalog` view now raises ``ValueError`` instead of passing silently. +* A model instance's primary key now appears in the default ``Model.__str__()`` + method, e.g. ``Question object (1)``. + .. _deprecated-features-2.0: Features deprecated in 2.0 diff --git a/tests/str/tests.py b/tests/str/tests.py index db21ccb2d9..181906fa0d 100644 --- a/tests/str/tests.py +++ b/tests/str/tests.py @@ -30,5 +30,8 @@ class SimpleTests(TestCase): # coerce the returned value. self.assertIsInstance(obj.__str__(), str) self.assertIsInstance(obj.__repr__(), str) - self.assertEqual(str(obj), 'Default object') - self.assertEqual(repr(obj), '') + self.assertEqual(str(obj), 'Default object (None)') + self.assertEqual(repr(obj), '') + obj2 = Default(pk=100) + self.assertEqual(str(obj2), 'Default object (100)') + self.assertEqual(repr(obj2), '')