【问题标题】:Django : Get date wise count in DatetimefieldDjango:在日期时间字段中获取日期计数
【发布时间】:2017-02-23 07:31:46
【问题描述】:

我有一个有日期时间字段的类

class Foo(models.Model):
    id = models.AutoField(primary_key=True, db_column='status_id')
    date_field = models.DateTimeField(default=django.utils.timezone.now)
    f1 = models.TextField(blank=True, null=True)
    f2 = models.SmallIntegerField()

我想在 DateTimeField 中对日期应用过滤器,并在进行一些查询后以以下格式获取输出:

f2 date_field f1
54 2017-02-01 4
53 2017-02-01 6
52 2017-02-01 2
51 2017-02-01 1
48 2017-02-01 5
47 2017-02-01 2
46 2017-02-01 3
45 2017-02-01 2
41 2017-02-01 1
38 2017-02-01 3
32 2017-02-01 17
30 2017-02-01 3
29 2017-02-01 4
18 2017-02-01 4
14 2017-02-01 5
13 2017-02-01 2

【问题讨论】:

    标签: python mysql django date


    【解决方案1】:

    这可能对你有用:-

    from django.db.models import Count 
    Foo.objects.values('f2','date_field','f1').annotate(dcount=Count('date_field')
    

    【讨论】:

    • 我的日期字段是日期时间字段,我希望根据日期而不是日期时间进行过滤。
    【解决方案2】:

    我觉得你的问题很不清楚。但是,从您的示例中,我看到该列表是在您的 f2 字段中排序的。过滤您的order_by('field')。要过滤字段,您可以在 queryset 上使用 .filter()。要过滤,例如今天,我们可以从datetime 库中传递datetime.now()。要格式化您的日期,您可以使用date/dateTime-object.strftime('<format>')。但是,请澄清您的问题,您的实际问题对我们来说是一个猜测。

    from datetime import datetime
    
    today = datetime.now()
    foos = Foo.objects.filter(date_field=today) \ 
            .order_by('-f2') \
            .annotate(date_count=Count('date_field'))
    
    for foo in foos:
        date_formatted = foo.date_field.strftime("%Y-%m-%d")
        print foo.f2, date_formatted, foo.date_count
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-27
      • 2020-12-16
      • 1970-01-01
      • 2011-05-30
      • 1970-01-01
      • 1970-01-01
      • 2017-08-30
      相关资源
      最近更新 更多