BTC $86,008.00 -0,14%
ETH $2,716.53 -0,15%
SOL $120.56 -0,38%
BNB $783.28 -0,68%
XRP $1.51 -0,63%
ADA $0.2751 +1,59%
LINK $14.00 -1,22%
DOGE $0.0950 -1,9%
AVAX $11.31 +2,79%
HYPE $93.22 -0,09%
SUI $1.20 -2,35%
BTC $86,008.00 -0,14%
ETH $2,716.53 -0,15%
SOL $120.56 -0,38%
BNB $783.28 -0,68%
XRP $1.51 -0,63%
ADA $0.2751 +1,59%
LINK $14.00 -1,22%
DOGE $0.0950 -1,9%
AVAX $11.31 +2,79%
HYPE $93.22 -0,09%
SUI $1.20 -2,35%
WISKTON.XYZ Logo
Dev Iniciante [LEVEL 1]

Criando um list_filter no django

Criando um list_filter no django

Primeiro passo é importar

from django.contrib.admin import SimpleListFilter

Segundo passo criar a classe customizada

class MenusRelacionadosFilter(SimpleListFilter):
parameter_name = u'menu'
title = u'todos relacionados Menu'

# aqui você faz a listagem das opções do filtro
def lookups(self, request, model_admin):
return tuple((unicode(menu.slug), menu.nome)
for menu in Menu.objects.filter(secao_pai=None))

def queryset(self, request, queryset):
# se não tiver parametros mostrará todos os dados
if not self.value():
return Menu.objects.all()

# se passar parametro faz o filtro
return Menu.objects.filter(
Q(slug=self.value()) | Q(menu__slug=self.value)
).distinct()

Para finalizar precisa adicionar ao list_filter

class MenuAdmin(AdminImageMixin,admin.ModelAdmin):
list_filter = [MenusRelacionadosFilter, ]

Código completo de um exemplo

# -*- coding: utf-8 -*-
from django.contrib import admin
from django.db.models import Q
from django.contrib.admin import SimpleListFilter

from models import *
from sorl.thumbnail.admin import AdminImageMixin

class MenusRelacionadosFilter(SimpleListFilter):
parameter_name = u'menu'
title = u'todos relacionados Menu'

def lookups(self, request, model_admin):
return tuple((unicode(menu.slug), menu.nome)
for menu in Menu.objects.filter(secao_pai=None))

def queryset(self, request, queryset):
if not self.value():
return Menu.objects.all()

return Menu.objects.filter(
Q(slug=self.value()) | Q(menu__slug=self.value)
).distinct()

class MenuAdmin(AdminImageMixin,admin.ModelAdmin):
list_display = ('nome', 'corAdmin', 'template', 'icone_menuAdmin', 'icone_paginaAdmin', 'ativo')
search_fields = ('nome',)
list_filter = [MenusRelacionadosFilter, 'ativo', 'template', ]
save_on_top = True
list_per_page = 20

prepopulated_fields = {"slug": ("nome",)}

admin.site.register(Menu,MenuAdmin)
AVISO DE SEGURANÇA (DYOR): Todo o conteúdo do wiskton.xyz tem caráter estritamente educativo e informativo. Criptoativos envolvem volatilidade e riscos cibernéticos. Jamais compartilhe sua seed phrase ou chaves privadas com terceiros.
// TRANSMISSÃO DE DADOS // COMPARTILHE ESTE PROTOCOLO
CYPHERPUNK BROADCAST NETWORK
wiskton
[ESCRITO POR]

Willem (WISKTON) Allan

Editor-Chefe, Desenvolvedor & Pesquisador Cypherpunk

Youtuber, Programador, investidor, fanático em tecnologia, fã de dragon ball, artista marcial, futebolista amador e gamer nas horas vagas.

// DISCUSSÃO & COMENTÁRIOS (0)
MODERADO VIA MATRIX

DEIXE UMA RESPOSTA

Nenhum comentário registrado ainda. Seja o primeiro a comentar!

// POSTS RELACIONADOS DA CATEGORIA

// MATRIX BUFFER LINK COPIADO COM SUCESSO!