We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Improve admin page
- [x] Add custom Admin models with `list_display`, `display_filter` (for example, by network), `ordering` and `search_fields`: https://docs.djangoproject.com/en/3.2/ref/contrib/admin/
- [x] Use admin decorator https://docs.djangoproject.com/en/3.2/ref/contrib/admin/#the-register-decorator

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `src/safe_apps/admin.py`
Content:
```
1 from django.contrib import admin
2 
3 from .models import SafeApp, Provider
4 
5 models = [SafeApp, Provider]
6 admin.site.register(models)
7
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/src/safe_apps/admin.py b/src/safe_apps/admin.py
--- a/src/safe_apps/admin.py
+++ b/src/safe_apps/admin.py
@@ -2,5 +2,34 @@
 
 from .models import SafeApp, Provider
 
-models = [SafeApp, Provider]
-admin.site.register(models)
+
+class NetworksFilter(admin.SimpleListFilter):
+    title = 'Networks'
+    parameter_name = 'networks'
+
+    def lookups(self, request, model_admin):
+        values = SafeApp.objects.values_list('networks', flat=True)
+        # lookups requires a tuple to be returned – (value, verbose value)
+        networks = [(network, network) for networks in values for network in networks]
+        networks = sorted(set(networks))
+        return networks
+
+    def queryset(self, request, queryset):
+        if value := self.value():
+            queryset = queryset.filter(networks__contains=[value])
+        return queryset
+
+
+@admin.register(SafeApp)
+class SafeAppAdmin(admin.ModelAdmin):
+    list_display = ('name', 'url', 'networks')
+    list_filter = (NetworksFilter,)
+    search_fields = ('name', 'url')
+    ordering = ('name',)
+
+
+@admin.register(Provider)
+class ProviderAdmin(admin.ModelAdmin):
+    list_display = ('name', 'url')
+    search_fields = ('name',)
+    ordering = ('name',)

{"golden_diff": "diff --git a/src/safe_apps/admin.py b/src/safe_apps/admin.py\n--- a/src/safe_apps/admin.py\n+++ b/src/safe_apps/admin.py\n@@ -2,5 +2,34 @@\n \n from .models import SafeApp, Provider\n \n-models = [SafeApp, Provider]\n-admin.site.register(models)\n+\n+class NetworksFilter(admin.SimpleListFilter):\n+    title = 'Networks'\n+    parameter_name = 'networks'\n+\n+    def lookups(self, request, model_admin):\n+        values = SafeApp.objects.values_list('networks', flat=True)\n+        # lookups requires a tuple to be returned \u2013 (value, verbose value)\n+        networks = [(network, network) for networks in values for network in networks]\n+        networks = sorted(set(networks))\n+        return networks\n+\n+    def queryset(self, request, queryset):\n+        if value := self.value():\n+            queryset = queryset.filter(networks__contains=[value])\n+        return queryset\n+\n+\n+@admin.register(SafeApp)\n+class SafeAppAdmin(admin.ModelAdmin):\n+    list_display = ('name', 'url', 'networks')\n+    list_filter = (NetworksFilter,)\n+    search_fields = ('name', 'url')\n+    ordering = ('name',)\n+\n+\n+@admin.register(Provider)\n+class ProviderAdmin(admin.ModelAdmin):\n+    list_display = ('name', 'url')\n+    search_fields = ('name',)\n+    ordering = ('name',)\n", "issue": "Improve admin page\n- [x] Add custom Admin models with `list_display`, `display_filter` (for example, by network), `ordering` and `search_fields`: https://docs.djangoproject.com/en/3.2/ref/contrib/admin/\r\n- [x] Use admin decorator https://docs.djangoproject.com/en/3.2/ref/contrib/admin/#the-register-decorator\n", "before_files": [{"content": "from django.contrib import admin\n\nfrom .models import SafeApp, Provider\n\nmodels = [SafeApp, Provider]\nadmin.site.register(models)\n", "path": "src/safe_apps/admin.py"}], "after_files": [{"content": "from django.contrib import admin\n\nfrom .models import SafeApp, Provider\n\n\nclass NetworksFilter(admin.SimpleListFilter):\n    title = 'Networks'\n    parameter_name = 'networks'\n\n    def lookups(self, request, model_admin):\n        values = SafeApp.objects.values_list('networks', flat=True)\n        # lookups requires a tuple to be returned \u2013 (value, verbose value)\n        networks = [(network, network) for networks in values for network in networks]\n        networks = sorted(set(networks))\n        return networks\n\n    def queryset(self, request, queryset):\n        if value := self.value():\n            queryset = queryset.filter(networks__contains=[value])\n        return queryset\n\n\n@admin.register(SafeApp)\nclass SafeAppAdmin(admin.ModelAdmin):\n    list_display = ('name', 'url', 'networks')\n    list_filter = (NetworksFilter,)\n    search_fields = ('name', 'url')\n    ordering = ('name',)\n\n\n@admin.register(Provider)\nclass ProviderAdmin(admin.ModelAdmin):\n    list_display = ('name', 'url')\n    search_fields = ('name',)\n    ordering = ('name',)\n", "path": "src/safe_apps/admin.py"}]}