from django.contrib import admin from django.contrib.contenttypes.admin import GenericTabularInline from django.contrib.contenttypes.models import ContentType from services.models import Service from .models import Payment class PaymentInline(GenericTabularInline): model = Payment ct_field = 'reason_type' ct_fk_field = 'reason_id' extra = 1 class PaymentAdmin(admin.ModelAdmin): list_display = ('reason_verbose', 'amount', 'period', 'payment_method',) list_filter = ('payment_method',) fields = ('amount', 'period', 'payment_method',) def get_queryset(self, request): qs = super().get_queryset(request) if request.user.is_superuser: return qs # Show only payment related to a service for which the user is in managment group. return qs.filter(service__service_type__group__in=request.user.groups.all()) def has_add_permission(self, request): return False admin.site.register(Payment, PaymentAdmin)