Найти - Пользователи
Полная версия: Группировка по дате
Начало » Django » Группировка по дате
1
pyOut
Приветствую,

Есть модель:
class UserActivityLog(models.Model):
    user = models.ForeignKey(User, related_name='user_activity_log', verbose_name=u'Пользовтель')
    created = models.DateTimeField(_(u'Создана'), auto_now_add=True)
    user_ip = models.IPAddressField(_(u'IP пользователя'), blank=True, null=True)
    class Meta:
        db_table = 'user_activity_log'
        ordering = ['-created']
        verbose_name = _(u'Активность пользователя')
        verbose_name_plural = _(u'Активность пользователей')
Нужно достать количество логинов пользователя в течении месяца с 1 число по последний календарный месяц. Причем если пользователь авторизировался в течении дня несколько раз то считать это за 1.

Начал делать запрос, но не могу его закончить:
login_count = (
        UserActivityLog.objects
        .filter(user_id=request.user.id)
        .count()
    )
reclosedev
Можно с помощью QuerySet.dates():
import datetime
 
start_date = datetime.date(2012, 7, 1)
end_date = datetime.date(2012, 7, 31)
login_count = UserActivityLog.objects.filter(
    user_id=request.user.id,
    created__range=(start_date, end_date),
).dates('created', 'day').count()

Или вручную
activities = UserActivityLog.objects.filter(
    user_id=request.user.id,
    created__range=(start_date, end_date),
).order_by('created')
login_count = sum(1 for _, _ in itertools.groupby(activities,
                                                  lambda x: x.created.day))
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB