Итак, что мне нужно, это что-то вроде:
class Comment(EmbeddedDocument):
content = StringField()
upvotes = IntField()
pub_date = DateTimeField()
class Post(Document):
title = StringField()
comments = SortedListField(EmbeddedDocumentField(Comment))
post_date = DateTimeField()
По умолчанию это сортируется по хронологическому порядку представления комментариев, но я хочу сделать сортировку SortedListField
атрибутом upvotes
встроенных комментариев. Возможно ли это, и если да, то как это сделать?
Это фактически рассматривается в модульных тестах, если не ясно из документации:
class Post(Document):
title = StringField()
comments = SortedListField(EmbeddedDocumentField(Comment)
ordering="upvotes", reverse=True)
post_date = DateTimeField()
Таким образом, добавление ключевого слова "ordering" позволяет поле сортировать, когда элементы будут изменены для указания. Вы, вероятно, также хотите, чтобы обратный оператор удостоверился, что первое значение "upvotes" также является первым.
В модульных тестах действительно показаны некоторые другие способы использования, поэтому они всегда являются хорошим источником для выяснения возможных неясных обычаев.