2

想想这些:这是一个函数,

def calculate(model):
    model.tempfield = 1

并且此函数将在此模型中保存一个临时字段,您可以在任何地方使用 model.tempfield 但如果它是一个查询集,则在 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 的 Log

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 回答