2013-08-14 4 views
0

Я хочу получить все записи с последней датой.django 1.5 Получить последние записи по дате

class Report(models.Model): 
    id = models.AutoField(primary_key=True) 
    part = models.ForeignKey(Part,related_name="reports") 
    this_week_use = models.IntegerField(blank=True,null=True,default=0) 
    this_week_fail = models.IntegerField(blank=True,null=True,default=0) 
    this_week_fail_percent = models.DecimalField(max_digits=5,decimal_places=2,blank=True,null=True,default=0.00) 
    prev4_week_use = models.IntegerField(blank=True,null=True,default=0) 
    prev4_week_fail = models.IntegerField(blank=True,null=True,default=0) 
    prev4_week_fail_percent = models.DecimalField(max_digits=5,decimal_places=2,blank=True,null=True,default=0.00) 
    platform = models.ForeignKey(Platform,related_name="reports") 
    date = models.DateField(auto_now_add=True) 
    class Meta: 
    unique_together = ('part','platform','date') 

Я попытался

rows = Report.objects.annotate(max_date=Max('date').filter(date=max_date)) 

, в результате которых нет данных

ответ

0

Использование latest() метод

Report.objects.latest('date') 
+0

Это дает мне самую последнюю дату, не все записи с последней датой. –

0

Вы можете использовать order_by, он доступен в 1.5:

latest_rows = Report.objects.all().order_by('-date') 

Если вы хотите какой-либо запрос в Вашей report модели, по умолчанию, заказанное этим date поля, то вы можете добавить этот ordering на мете части вашей Report модели.

class Report(models.Model): 
    class Meta: 
     ordering = '-date' 

Теперь вы можете сделать запрос без использования order_by в запросе, но с тем же результатом:

latest_rows = Report.objects.all() 
0

Если вы не возражаете, чтобы сделать два запроса, то это должно сделать это:

max_date = Report.objects.latest('date').date 
qs = Report.objects.filter(date=max_date) 
Смежные вопросы