У меня есть следующая модель:Как сделать сортировку в БД по количеству элементов в ListField?
class Departments(Document):
_id = fields.ObjectIdField()
name = fields.StringField(blank=True, null=True)
department_id = fields.StringField(blank=True, null=True) # Added
list_of_users = fields.ListField(blank=True, null=True)
list_of_workstations = fields.ListField(blank=True, null=True)
Как вы можете видеть list_of_users
и list_of_workstations
являются списки элементов.
Я написал код в Python, который берет все данные из БД, помещает его в dict и затем сортирует по мере необходимости, но работает слишком медленно.
Как можно сортировать Departments
прямо в БД по длине list_of_users
или list_of_workstations
или по отношению list_of_users/list_of_workstations
, что-то вроде:
departments = DepartmentStats.objects.order_by(len(list_of_users)).dsc
или
departments = DepartmentStats.objects.order_by(len(list_of_users)/len(list_of_workstations)).dsc
?
Читать эту документацию, вероятно, вы найдете то, что вы хотите. https://docs.djangoproject.com/ru/dev/topics/db/aggregation/ –