Задание порядка сортировки связанной модели Django - PullRequest
2 голосов
/ 09 июня 2009

У меня есть модели 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")

Предполагая, что это сработает, я получу коллекцию списков с одинаковым порядком сортировки для каждой партии товаров. Как бы я по-разному сортировал связанные элементы каждого списка?

Ответы [ 2 ]

3 голосов
/ 09 июня 2009

Синтаксис для упорядочивания по связанным моделям такой же, как у двойного подчеркивания, как у filter, поэтому вы можете сделать:

List.objects.filter(user=request.user).select_related().order_by("listitems__name")

Вы должны просто иметь возможность использовать разные поля одинаково в вызове order_by.

2 голосов
/ 09 июня 2009

Если списки небольшие, то вы можете сделать это на python , используя сортировку и тегирование

list = <...code to get sublist here ...>
list.sort(key=lambda x: x.due_date) #sort by due date, say

В противном случае запустить запрос для каждого подсписка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...