Index: django/db/models/base.py
===================================================================
--- django/db/models/base.py	(revision 8272)
+++ django/db/models/base.py	(working copy)
@@ -49,13 +49,21 @@
             meta = attr_meta
         base_meta = getattr(new_class, '_meta', None)
 
+        kwargs = {}
         if getattr(meta, 'app_label', None) is None:
             # Figure out the app_label by looking one level up.
             # For 'django.contrib.sites.models', this would be 'sites'.
             model_module = sys.modules[new_class.__module__]
-            kwargs = {"app_label": model_module.__name__.split('.')[-2]}
-        else:
-            kwargs = {}
+            try:
+                app_label = model_module.__name__.split('.')[-2]
+            except IndexError:
+                # This was a relative import from the same directory.
+                # Retrieve the full path.
+                from os.path import abspath, split as path_split
+                app_dir = path_split(abspath(model_module.__file__))[0]
+                app_label = path_split(app_dir)[1]
+                
+            kwargs["app_label"] = app_label
 
         new_class.add_to_class('_meta', Options(meta, **kwargs))
         if not abstract:
