Back
Syntax
Study
Editor
Mode:
HTML
CSS
JavaScript
PHP
Reset
Run »
HTML / CSS / JS
# blog/admin.py — site customisation and per-user queryset filtering from django.contrib import admin from .models import Post # --- Branding --- admin.site.site_header = 'My Blog Administration' admin.site.site_title = 'My Blog Admin' admin.site.index_title = 'Dashboard' @admin.register(Post) class PostAdmin(admin.ModelAdmin): list_display = ['title', 'author', 'status', 'published_at'] def get_queryset(self, request): """Non-superusers only see their own posts.""" qs = super().get_queryset(request) if request.user.is_superuser: return qs return qs.filter(author=request.user) def save_model(self, request, obj, form, change): """Auto-assign author on create.""" if not change: obj.author = request.user super().save_model(request, obj, form, change) def has_change_permission(self, request, obj=None): if obj is not None and not request.user.is_superuser: return obj.author == request.user return super().has_change_permission(request, obj) def has_delete_permission(self, request, obj=None): if obj is not None and not request.user.is_superuser: return obj.author == request.user return super().has_delete_permission(request, obj) # templates/admin/base_site.html — override header # {% extends "admin/base.html" %} # {% block branding %} # <h1 id="site-name"><a href="{% url 'admin:index' %}">My Blog Admin</a></h1> # {% endblock %}
Result
Open