admin.py 962 Bytes
from django.contrib import admin
from django.db.models import Count

from organismo.models import Organismo, TipoOrganismo


@admin.register(TipoOrganismo)
class TipoOrganismoAdmin(admin.ModelAdmin):
    list_display = ('nombre', 'es_activo', 'cantidad_organismo')
    search_fields = ('nombre',)
    actions = ('desactivar_seleccionados',)

    def get_queryset(self, request):
        queryset = super().get_queryset(request).annotate(cantidad_organismo=Count('organismos'))
        if request.user.is_superuser:
            return queryset

        return queryset.filter(es_activo=True)

    def desactivar_seleccionados(self, request, queryset):
        queryset.update(es_activo=False)

    def cantidad_organismo(self, tipo):
        return tipo.cantidad_organismo


@admin.register(Organismo)
class OrganismoAdmin(admin.ModelAdmin):
    list_display = ('nombre', 'tipo')
    search_fields = ('nombre', 'tipo__nombre')
    autocomplete_fields = ('tipo',)