基本的なモデルがあるとしましょう。
class Log(models.Model):
key = fields.BigInteger()
calldate = fields.DateTimeField()
followupdate = fields.DateTimeField()
同じキーに複数のfollowupdatesを設定できます。私がやりたいのは、リストに最後に(呼び出し日で)スケジュールされたフォローアップを表示することです。
私の見解では、私は以下を持っています:
# views.py
def callbacks(request):
""" get objects where a followupdate has been specified """
q = Log.objects.filter(followupdate__isnull = False).order_by("-calldate")
""" deduplicate key so only most recently scheduled followupdate show """
newresults = []
seen_key = []
for result in q:
if result.key not in seen_key:
seen_key.append(result.key)
newresults.append(result)
results = newresults
""" What I want to do is equivalent to results.order_by("followupdate") """
""" But since it's a dictionary now and not a queryset, I can't """
return render_to_response('callbacks.html', {"callbacks":results})
私が助けを必要としているのはresults
、キーで辞書を並べ替えることfollowupdate
です。各辞書には、次のようなキーがあります。'followupdate': datetime.date(2013, 3, 25)
これは、並べ替える必要があるものです。