2016-09-24 20 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')) 

感謝的

相關問題