Перезапись has_add_permission
работает, но в приведенных примерах она нарушает систему разрешений в Django (сотрудники без необходимых разрешений могут добавлять настройки). Вот тот, который не ломает это:
class SettingAdmin(admin.ModelAdmin):
def has_add_permission(self, request):
base_add_permission = super(SettingAdmin, self).has_add_permission(request)
if base_add_permission:
# if there's already an entry, do not allow adding
count = Setting.objects.all().count()
if count == 0:
return True
return False