diff --git a/gnuviechadmin/taskresults/admin.py b/gnuviechadmin/taskresults/admin.py
index 3647426..05b8618 100644
--- a/gnuviechadmin/taskresults/admin.py
+++ b/gnuviechadmin/taskresults/admin.py
@@ -11,5 +11,10 @@ from .models import TaskResult
 
 @admin.register(TaskResult)
 class TaskResultAdmin(admin.ModelAdmin):
-    list_display = ('task_id', 'creator', 'signature', 'finished', 'state')
-    list_filter = ('finished',)
+    list_display = ("task_id", "creator", "signature", "finished", "state")
+    list_filter = ("finished", "creator")
+    date_hierarchy = "created"
+    readonly_fields = ("created", "modified")
+
+    def has_add_permission(self, request):
+        return False
diff --git a/gnuviechadmin/taskresults/management/commands/fetch_taskresults.py b/gnuviechadmin/taskresults/management/commands/fetch_taskresults.py
index 8f42a1e..4e20299 100644
--- a/gnuviechadmin/taskresults/management/commands/fetch_taskresults.py
+++ b/gnuviechadmin/taskresults/management/commands/fetch_taskresults.py
@@ -13,6 +13,10 @@ class Command(BaseCommand):
     help = "fetch task results"
 
     def handle(self, *args, **options):
-        for taskresult in TaskResult.objects.filter(finished=False):
-            taskresult.fetch_result()
-            taskresult.save()
+        for task_result in TaskResult.objects.filter(finished=False):
+            if options["verbosity"] > 1:
+                print(f"fetching result for unfinished task {task_result.task_id}", file=self.stderr)
+            task_result.fetch_result()
+            if options["verbosity"] > 2:
+                print(f"fetched result for unfinished task {task_result.task_id}", file=self.stderr)
+            task_result.save()
diff --git a/gnuviechadmin/taskresults/migrations/0004_alter_taskresult_options.py b/gnuviechadmin/taskresults/migrations/0004_alter_taskresult_options.py
new file mode 100644
index 0000000..1626d2c
--- /dev/null
+++ b/gnuviechadmin/taskresults/migrations/0004_alter_taskresult_options.py
@@ -0,0 +1,17 @@
+# Generated by Django 3.2.18 on 2023-04-29 08:55
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('taskresults', '0003_auto_20160109_1524'),
+    ]
+
+    operations = [
+        migrations.AlterModelOptions(
+            name='taskresult',
+            options={'ordering': ['-modified'], 'verbose_name': 'Task result', 'verbose_name_plural': 'Task results'},
+        ),
+    ]
diff --git a/gnuviechadmin/taskresults/models.py b/gnuviechadmin/taskresults/models.py
index 580e777..a56136d 100644
--- a/gnuviechadmin/taskresults/models.py
+++ b/gnuviechadmin/taskresults/models.py
@@ -3,6 +3,7 @@ This model defines the database models to handle Celery AsyncResults.
 
 """
 from django.db import models
+from django.utils import timezone
 from django.utils.translation import gettext as _
 from model_utils.models import TimeStampedModel
 
@@ -33,7 +34,7 @@ class TaskResult(TimeStampedModel):
     class Meta:
         verbose_name = _("Task result")
         verbose_name_plural = _("Task results")
-        ordering = ["created"]
+        ordering = ["-modified"]
 
     def __str__(self):
         return "{creator} ({task_id}): {finished}".format(