Selecione anos distintos e meses para Django Arquivo de
-
21-08-2019 - |
Pergunta
Eu quero fazer uma página archive_index para o meu site django. No entanto, os pontos de vista genérico com base em datas não são realmente qualquer ajuda. Eu quero o dicionário retornado pela visão de ter todos os anos e meses para os quais existe pelo menos uma instância do tipo de objeto. Então, se meu blog começou em setembro de 2007, mas não havia mensagens em abril de 2008, eu poderia obter algo como isto
2009 - Jan, Feb, Mar 2008 - Jan, Feb, Mar, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec 2007 - Sep, Oct, Nov, Dec
Solução
Isto lhe dará uma lista de datas de lançamento únicas:
Posts.objects.filter(draft=False).dates('post_date','month',order='DESC')
É claro que você não pode precisar o projecto de filtro, e mudança 'post_date' para o seu nome do campo, etc.
Outras dicas
Eu encontrei a resposta à minha pergunta.
É desta página na documentação.
Há uma função chamada datas que lhe dará datas distintas. Então eu posso fazer
Entry.objects.dates ( 'pub_date', 'mês') para obter uma lista de datetime objetos, um para cada ano / mês.
Você deve ser capaz de obter todas as informações que descrevem a partir dos pontos de vista internos. você pode ser mais específico sobre o que você não pode ficar? Este deve ter tudo o que precisa:
django.views.generic.date_based.archive_month
página Referência (procure a string acima nessa página)