Ano de Copa, álbuns de figurinhas à venda, suponhamos que, assim como eu, você tenha feito (ou queira fazer) um sistema pra gerenciamento das figurinhas da Panini.
O models.py ficaria assim:
# coding: utf-8 from django.db import models class Figurinha(models.Model): """(Figurinha description)""" numero = models.CharField(max_length=3, verbose_name=u'Número') quantidade = models.IntegerField(default=0) especial = models.BooleanField(default=False, help_text='Figurinhas brilhantes e/ou diferenciadas') data = models.DateTimeField(null=True, blank=True, auto_now=True, verbose_name=u'Modificação') class Meta: ordering = ('id',) def __unicode__(self): return self.numero
Algumas explicações antes de continuarmos:
- Número é sim um CharField, pois neste álbum existem figurinhas alfanuméricas (J1, J2, J3, J4, L1, L2, L3, L4 e W1)
- Quantidade será o campo atualizável, onde 0 são as figurinhas que faltam, 1 pra colada no álbum e maiores que 1 pra quantidade de repetidas. Ex: Quantidade = 2, são 1 no álbum e 1 repetida.
- Data será atualizada a cada atualização da figurinha para que seja possível emitir a data da ultima atualização da lista
E o admin.py :
class StatusListFilter(admin.SimpleListFilter): # Human-readable title which will be displayed in the # right admin sidebar just above the filter options. title = 'Status' # Parameter for the filter that will be used in the URL query. parameter_name = 's' def lookups(self, request, model_admin): """ Returns a list of tuples. The first element in each tuple is the coded value for the option that will appear in the URL query. The second element is the human-readable name for the option that will appear in the right sidebar. """ return ( ('falta', 'Falta'), ('tenho', 'Tenho'), ('repetida', 'Repetida'), ) def queryset(self, request, queryset): """ Returns the filtered queryset based on the value provided in the query string and retrievable via `self.value()`. """ # Compare the requested value (either '80s' or 'other') # to decide how to filter the queryset. if self.value() == 'falta': return queryset.filter(quantidade=0) elif self.value() == 'tenho': return queryset.filter(quantidade__gt=0) elif self.value() == 'repetida': return queryset.filter(quantidade__gt=1) class FigurinhaAdmin(admin.ModelAdmin): search_fields = ('numero',) list_display = ('numero','quantidade','especial','data') list_filter = ['quantidade','especial','data',StatusListFilter] list_editable = ['quantidade',] date_hierarchy = 'data' readonly_fields = ['numero','especial',] save_on_top = True fieldsets = ( (u'Número', {'fields': ('numero',)}), ('Quantidade', {'fields': ('quantidade',)}), ('Especial', {'fields': ('especial',)}), ) admin.site.register(Figurinha, FigurinhaAdmin)
Para mais informações sobre o SimpleListFilter, consulte https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_filter
hasta!
Nenhum comentário:
Postar um comentário