Для этого вы можете использовать Джанго-куб .С помощью следующего кода в вашем views.py (а затем подключите entry_count
в ваших URL), вы должны получить то, что вам нужно:
# cube declaration
from cube.models import Cube, Dimension
class EntryCube(Cube):
#replace <your_date_field> by the field name
month = Dimension('<your_date_field>__month')
year = Dimension('<your_date_field>__year')
@staticmethod
def aggregation(queryset):
return queryset.count()
# views declaration
from .models import <YourModel> #replace by your model
from cube.views import table_from_cube
def entry_count(request):
cube = EntryCube(<YourModel>.objects.all())
return table_from_cube(request, cube, ['year', 'month'], template='table.html')
#template 'table.html' is in 'example/template' folder, copy it in your template folder, and modify it to your wish.
РЕДАКТИРОВАТЬ:
Если выЕсли вы хотите настроить способ отображения размеров, вы можете просто создать подкласс Dimension
(см. этот фрагмент ):
class MonthDimension(Dimension):
@property
def pretty_constraint(self):
#just return the month name according to the month number that you can get in "self.constraint", e.g. self.constraint = 1 -> return 'january'
return month_name
(я планирую предоставить подклассы измерений, чтобы разрешить различные форматы, напримерчто вам нужно. Поэтому, если вы используете django-cube и пишете хороший подкласс Dimension
для форматирования дат, я был бы рад взглянуть на это!)
Хорошо ..Это слишком для того, что вы хотите.Однако, если после этого вы решите, что вам нужно больше статистики для ваших записей (например, количество записей / автор / месяц / год / тег и т. Д.), Вы просто добавляете измерение в куб.Если вы решили использовать это, и вам нужна дополнительная помощь, пожалуйста, спросите!