admin.py 1014 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).values('organismos').annotate(cantidad_organismo=Count('organismos')).all()
        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',)