Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 我想按月份分组怎么办?在django_Linux_Django - Fatal编程技术网

Linux 我想按月份分组怎么办?在django

Linux 我想按月份分组怎么办?在django,linux,django,Linux,Django,sumary=Profile.objects.values('user\u report\u created\u date\u month') 错误 无法将关键字“月”解析为字段。不允许在“创建日期”加入 class Profile(models.Model): first_name = models.CharField(max_length=100, verbose_name=_('Имя')) last_name = models.CharField(

sumary=Profile.objects.values('user\u report\u created\u date\u month')

错误 无法将关键字“月”解析为字段。不允许在“创建日期”加入

    class Profile(models.Model):
        first_name = models.CharField(max_length=100, verbose_name=_('Имя'))
        last_name = models.CharField(max_length=100)



class Department(models.Model):
    number = models.IntegerField(default=0)
    name = models.CharField(max_length=150, default=None)

    def __unicode__(self):
        return self.name


class Report(models.Model):
    user = models.ForeignKey(Profile, related_name='user_report')
    department = models.ForeignKey(Department, related_name='report')
    created_date = models.DateTimeField()
    edited_by = models.ForeignKey(User)
    edited_at = models.DateTimeField(default=timezone.now())

    def __unicode__(self):
        return self.department.name

    class Meta:
        verbose_name = _('Отчет')
        verbose_name_plural = _('Отчеты')


class Statistic(models.Model):
    name = models.CharField(max_length=90)
    value = models.IntegerField()
    report = models.ForeignKey(Report, related_name='stat_report')

    def __unicode__(self):
        return self.name

你可能想要这样的东西:

end_date = datetime.datetime.now() - datetime.timedelta(days=31)
start_date = datetime.datetime.now()
summary = Profile.objects.filter(user_report__range=(start_date, end_date))
这是从一个月开始获取用户报告。对吗?如果您想要更准确的答案,请添加更多代码。

我这样做的

 truncate_date = connection.ops.date_trunc_sql('month', 'created_date')
    qs = Profile.objects.extra({'date': truncate_date})
    report = qs.values('user_report__stat_report__name', 'date').filter(
        id=profiles_id).annotate(Sum('user_report__stat_report__value'))

谢谢

我们应该在没有你的模型的情况下了解你的想法并回答这个问题?如果没有看到你的模型,我们就看不到它们之间的关系和领域,因此我们帮不了什么忙。编辑您的帖子,并将其添加到您迄今为止尝试过的内容中。请参阅:否我想在值中执行而不是筛选我想按值按月分组例如,假设我有一份2年期报告,我想在每月共享此报告您可以更改值end_date和start_date以根据需要的时间获取报告。我不确定我是否完全理解你的问题。所以sumary=Profile.objects.values​​(“用户报告创建日期月”)可以完成吗?通过objects.value,我想用objects.value进行过滤我仍然没有得到你想要的,但是你发布的内容不会起作用。过滤时,从记录中获取值。你只需要从记录中“提取”它们。如下所示:
summary.0.first\u name
获取第一个。