diff --git a/django/db/models/base.py b/django/db/models/base.py
index 5dd11a9..ff08552 100644
--- a/django/db/models/base.py
+++ b/django/db/models/base.py
@@ -410,6 +410,8 @@ class Model(object):
         return force_unicode(dict(field.choices).get(value, value), strings_only=True)
 
     def _get_next_or_previous_by_FIELD(self, field, is_next, **kwargs):
+        if not self.pk:
+            raise ValueError, "get_next/get_previous cannot be used on unsaved objects."
         op = is_next and 'gt' or 'lt'
         order = not is_next and '-' or ''
         param = smart_str(getattr(self, field.attname))
diff --git a/docs/db-api.txt b/docs/db-api.txt
index c94eb00..b8923c8 100644
--- a/docs/db-api.txt
+++ b/docs/db-api.txt
@@ -2207,7 +2207,8 @@ described in `Field lookups`_ above.
 
 Note that in the case of identical date values, these methods will use the ID
 as a fallback check. This guarantees that no records are skipped or duplicated.
-For a full example, see the `lookup API sample model`_.
+That also means you cannot use those methods on unsaved objects. For a full
+example, see the `lookup API sample model`_.
 
 .. _lookup API sample model: ../models/lookup/
 
