2016-09-24 16 views
-1

sumary = Profile.objects.values(“user_report__created_date__month”)我想按一个月怎么办?在Django

错误 无法解析关键词“月”到现场。不允许加入“created_date”。

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 
+0

我们应该了解你的心思,并回答这个没有你的车型? –

+0

没有看到你的模型,我们不能看到关系和领域 - 所以我们不能有太大的帮助。编辑您的文章,并将其添加到+到目前为止您尝试的任何内容。请参阅:http://stackoverflow.com/help/how-to-ask –

回答

0

你可能想是这样的:

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)) 

这是从一个月得到用户的报告。那是对的吗?如果您想要更准确的答案,请添加更多代码。

+0

不,我想要做的价值不过滤器我想按月分组 –

+0

例如,让我们说我有一个2年的报告,我想在几个月内共享此报告 –

+0

您可以更改值end_date和start_date以根据您希望的时间获取报告。我不确定我是否完全理解你的问题。 – 1GDST

0

我说得那么

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')) 

感谢的

相关问题