指定Djangoの関連モデルのソート順
-
13-09-2019 - |
質問
私はアイテムのリストですDjangoのモデルを持っていると私は、各リストの項目は、別のソート順序を持っていると思います。たぶん、リスト1は、優先順位によって名前、日付別リスト2、リスト3のラインアイテムをソートします。
モデルは、多かれ少なかれ、このようになります:
class ListItem(models.Model):
priority = models.IntegerField(choices=PRIORITY_CHOICES)
name = models.CharField(max_length=240)
due_date = models.DateTimeField(null=True, blank=True)
list = models.ForeignKey(List)
今、私は私の見解では、このクエリを使用しています:
lists = List.objects.filter(user=request.user)
return render_to_response('showlists.html', {'lists': lists })
私はこのような何かを行うことができることを意味するものでは例を読んでます:
lists = List.objects.filter(user=request.user).select_related().order_by("items.name")
働いていた、それは項目の各バッチについて、同一のソート順と私にリストのコレクションを与えると仮定。どのように私は異なり、個々のリストの関連項目を並べ替えて行くのでしょうか?
解決
関連モデル間で注文するための構文はfilter
と同じ二重のアンダースコア形式ですので、あなたが行うことができます:
List.objects.filter(user=request.user).select_related().order_by("listitems__name")
あなたはorder_by
呼び出しで同じように異なるフィールドを使用するだけでできるはずます。
他のヒント
リストが小さい場合は、
、あなたは使用して、Pythonのの中でそれを行うことができソートとタグ付け
list = <...code to get sublist here ...>
list.sort(key=lambda x: x.due_date) #sort by due date, say
それ以外の場合は、各サブリストのクエリをキックオフ
所属していません StackOverflow