指定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