from django.contrib import admin from django.contrib.sites.models import Site from .models import EmailConfiguration @admin.register(EmailConfiguration) class EmailConfigurationAdmin(admin.ModelAdmin): list_display = ( "site", "from_name", "from_email", "reply_to", "updated_at", ) list_select_related = ("site",) search_fields = ("site__domain", "from_name", "from_email", "reply_to") readonly_fields = ("created_at", "updated_at") fieldsets = ( (None, {"fields": ("site",)}), ( "Email Settings", { "fields": ("api_key", ("from_name", "from_email"), "reply_to"), "description": 'Configure the email settings. The From field in emails will appear as "From Name "', }, ), ( "Timestamps", {"fields": ("created_at", "updated_at"), "classes": ("collapse",)}, ), ) def get_queryset(self, request): return super().get_queryset(request).select_related("site") def formfield_for_foreignkey(self, db_field, request, **kwargs): if db_field.name == "site": kwargs["queryset"] = Site.objects.all().order_by("domain") return super().formfield_for_foreignkey(db_field, request, **kwargs)