Index: C:/Program Files/eclipse/workspace/django/django/core/meta/__init__.py
===================================================================
--- C:/Program Files/eclipse/workspace/django/django/core/meta/__init__.py	(revision 1561)
+++ C:/Program Files/eclipse/workspace/django/django/core/meta/__init__.py	(working copy)
@@ -984,8 +984,12 @@
 
 def method_save(opts, self):
     # Run any pre-save hooks.
+    cont = True
     if hasattr(self, '_pre_save'):
-        self._pre_save()
+        cont = self._pre_save()
+    #If function returned a value which is False stop saving
+    if not cont and cont is not None:
+        return
     non_pks = [f for f in opts.fields if not f.primary_key]
     cursor = db.db.cursor()
 
@@ -1034,8 +1038,12 @@
 def method_delete(opts, self):
     assert getattr(self, opts.pk.attname) is not None, "%r can't be deleted because it doesn't have an ID."
     # Run any pre-delete hooks.
+    cont = True
     if hasattr(self, '_pre_delete'):
-        self._pre_delete()
+        cont = self._pre_delete()
+    #If function returned a value which is False stop saving
+    if not cont and cont is not None:
+        return
     cursor = db.db.cursor()
     for related in opts.get_all_related_objects():
         rel_opts_name = related.get_method_name_part()
