0

最新の日付を持つすべてのレコードを取得したい。

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

その結果、データはありませんでした

4

3 に答える 3

0

order_byを使用できます。次で利用できます1.5

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

モデルでクエリが必要な場合はreport、デフォルトでこのフィールドで並べ替えられているため、モデルのメタ セクションにこの並べ替えdateを追加できます。Report

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

これで、クエリで使用せずにクエリを作成できますorder_byが、同じ結果になります:

latest_rows = Report.objects.all()
于 2015-02-17T20:10:26.967 に答える
0

2 つのクエリを作成してもかまわない場合は、次のようにします。

max_date = Report.objects.latest('date').date
qs = Report.objects.filter(date=max_date)
于 2015-02-17T20:42:19.657 に答える