我有以下查询:
tasks = tasks.order_by('order_item__due_date', 'title__name')
但是,order_item
可能为NULL,在这种情况下,上述查询将无效(因为NULL对象没有due_date)。
在这种情况下,我将如何执行以下操作:
tasks = tasks.order_by('order_item__due_date' if order_item, 'title_name')
答案 0 :(得分:3)
错误是什么?如果没有损坏,请不要修理它。 ;)
你可以:
像这样:
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为空,您的代码也能正常工作。
tasks = tasks.order_by('order_item__due_date', 'title__name')
访问是另一回事。这将打印due_dates,直到它到达没有order_item的obj,而不是它会引发AttributeError:'NoneType'对象没有属性'due_date'。
for obj in tasks:
print obj.order_item.due_date