2

これらについて考えてみてください: ここに関数があります。

def calculate(model):
    model.tempfield = 1

この関数はこのモデルに一時フィールドを保存し、どこでも model.tempfield を使用できますが、クエリセットの場合、order_by の後、これらの一時フィールドは失われます

queryset でこれらの一時フィールドを order_by する方法は?

私は2つのモデルを持っています:

Class A(models.Model):
    name = models.CharField(maxlength=100)

Class Log_Of_A(models.Model):
    clicks = models.IntegerField()
    a = models.ForeignKey(A)
    date = models.DateField(db_index=True)

日付ごとにAのログを計算します

def createlog(request):
    start = request.GET.get("start")
    end = request.GET.get("end")
    all_A = A.objects.all()
    for a in all_A:
        logs=Log_Of_A.objects.filter(a=a,date__gt=start,date__lt=end)
        statistics = logs.aggregate(Sum("clicks"))
        a.clicks = statistics["clicks__sum"]
    all_A.order_by("clicks")
    return all_A

order_by一時フィールドの方法

4

1 に答える 1

2

これを試して:

import operator

def createlog(request):
  start = request.GET.get("start")
  end = request.GET.get("end")
  all_A = A.objects.all()
  for a in all_A:
    logs=Log_Of_A.objects.filter(a=a,date__gt=start,date__lt=end)
    statistics = logs.aggregate(Sum("clicks"))
    a.clicks = statistics["clicks__sum"]
  sorted = sorted(all_A, key=operator.attrgetter('clicks'), reverse=True)
  return sorted
于 2013-01-18T09:49:21.323 に答える