Многоуровневая сортировка коллекций - PullRequest
1 голос
/ 01 апреля 2011

Как мне добавить еще один уровень сортировки в коллекции?

Пример. На сайте недвижимости есть списки объектов недвижимости для продажи. Списки достигнуты, используя Коллекции. Проданные объекты должны быть внизу списка, а остальные должны быть отсортированы по цене.

Ответы [ 3 ]

3 голосов
/ 01 апреля 2011

http://plone.org/products/collective.flexitopic

делает это на земле javascript. Если это нормально для вас. В противном случае этот индекс:

http://www.dieter.handshake.de/pyprojects/zope/#ManagableIndex

может помочь вам создать новое поле для сортировки коллекции.

Другим подходом может быть предоставление продаваемой недвижимости отрицательной цены, а не ее отображение, поэтому сортировка будет работать, как ожидается.

1 голос
/ 01 апреля 2011

Вы можете создать вложенную коллекцию.Как и в коллекции событий по умолчанию, в которой есть коллекция «Прошлые события».Я полагаю, что вы не можете отобразить объекты вложенной коллекции в одном и том же листинге, но по крайней мере вы видите большую ссылку «Прошлые события».

При таком подходе вы должны исключить проданные свойства из начальной коллекции (sold должен быть указателем в вашем каталоге) и включать только вложенные свойства во вложенный.

1 голос
/ 01 апреля 2011

Вы не можете без дополнительного кодирования. Вам нужно будет вручную отсортировать результаты запроса каталога после их получения, так как каталог Zope сам по себе не поддерживает многоуровневую сортировку. В зависимости от размера набора результатов это также может быть неэффективно.

Если вы хотите пойти по этому пути, вам придется либо создать подкласс класса ATContentTypes.content.topic.ATTopic и переопределить метод queryCatalog, либо создать новые версии скинов для представлений темы, чтобы вызвать другой метод, который в свою очередь вызывает queryCatalog, чтобы вы могли применить к нему дополнительную сортировку.

Излишне говорить, что это требует некоторого опыта Plone и Python.

...