エラーは何ですか?壊れていない場合は、修正しないでください。;)
あなたはできる:
- order_item のないすべてのタスクを選択し、タイトルで並べ替えます。
- order_item を持つすべてのタスクを選択し、order_item__due_date で並べ替えます。
- 2 つのクエリセットを結合します。
このような:
tasks = Tasks.objects.all()
objects_by_title = tasks.objects.filter(order_item__isnull=True).order_by('title')
objects_by_due_date = tasks.objects.filter(order_item__isnull=False).order_by('order_item__due_date')
queryset = objects_by_title | objects_by_due_date
アップデート:
order_item が Null の場合でも、コードは正常に機能します。
tasks = tasks.order_by('order_item__due_date', 'title__name')
アクセスは別物です。これは、order_item のない obj に到達するまで due_dates を出力し、AttributeError: 'NoneType' object has no attribute 'due_date' を発生させます。
for obj in tasks:
print obj.order_item.due_date