我有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

否则开球一个查询的每个子列表

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top