Index: django/contrib/admin/templatetags/admin_modify.py
===================================================================
--- django/contrib/admin/templatetags/admin_modify.py	(revision 4828)
+++ django/contrib/admin/templatetags/admin_modify.py	(working copy)
@@ -38,14 +38,15 @@
     opts = context['opts']
     change = context['change']
     is_popup = context['is_popup']
+    has_add_permission = context.has_key('has_add_permission') and context['has_add_permission'] or False
     return {
         'onclick_attrib': (opts.get_ordered_objects() and change
                             and 'onclick="submitOrderForm();"' or ''),
         'show_delete_link': (not is_popup and context['has_delete_permission']
                               and (change or context['show_delete'])),
         'show_save_as_new': not is_popup and change and opts.admin.save_as,
-        'show_save_and_add_another': not is_popup and (not opts.admin.save_as or context['add']),
+        'show_save_and_add_another': not is_popup and (not opts.admin.save_as or context['add']) and has_add_permission,
         'show_save_and_continue': not is_popup and context['has_change_permission'],
         'show_save': True
     }
 submit_row = register.inclusion_tag('admin/submit_line.html', takes_context=True)(submit_row)
Index: django/contrib/admin/views/main.py
===================================================================
--- django/contrib/admin/views/main.py	(revision 4828)
+++ django/contrib/admin/views/main.py	(working copy)
@@ -201,6 +201,7 @@
         'change': change,
         'has_delete_permission': context['perms'][app_label][opts.get_delete_permission()],
         'has_change_permission': context['perms'][app_label][opts.get_change_permission()],
+        'has_add_permission': context['perms'][app_label][opts.get_add_permission()],
         'has_file_field': opts.has_field_type(models.FileField),
         'has_absolute_url': hasattr(model, 'get_absolute_url'),
         'auto_populated_fields': auto_populated_fields,
