Вычислите среднюю оценку и порядок по убыванию в flask-sqlalchemy [duplicate]

Обмен любыми узлами, а не братьями и сестрами, а не смежными братьями и сестрами, без временных узлов, без клонирования, без jquery ... IE9 +

  function swapNodes (n1, n2) {var p1 = n1.  ParentNode;  var p2 = n2.parentNode;  var i1, i2;  if (! p1 ||! p2 || p1.isEqualNode (n2) || p2.isEqualNode (n1)) return;  for (var i = 0; i & lt; p1.children.length; i ++) {if (p1.children [i] .isEqualNode (n1)) {i1 = i;  }} for (var i = 0; i & lt; p2.children.length; i ++) {if (p2.children [i] .isEqualNode (n2)) {i2 = i;  }} if (p1.isEqualNode (p2) & amp; i1 & lt; i2) {i2 ++;  } p1.insertBefore (n2, p1.children [i1]);  p2.insertBefore (n1, p2.children [i2]);  }  
3
задан GhitaB 17 December 2014 в 09:58
поделиться

1 ответ

Гибридные атрибуты - это специальные методы, которые действуют как свойство Python, так и выражение SQL. Пока функция difficulty может быть выражена в SQL, ее можно использовать для фильтрации и упорядочивания, как обычный столбец.

Например, если вы вычисляете трудности, поскольку количество попугаев имеет проблему, раз десять, если проблема старше 30 дней, вы должны использовать:

from datetime import datetime, timedelta
from sqlalchemy import Column, Integer, DateTime, case
from sqlalchemy.ext.hybrid import hybrid_property

class Problem(Base):
    parrots = Column(Integer, nullable=False, default=1)
    created = Column(DateTime, nullable=False, default=datetime.utcnow)

    @hybrid_property
    def difficulty(self):
        # this getter is used when accessing the property of an instance
        if self.created <= (datetime.utcnow() - timedelta(30)):
            return self.parrots * 10

        return self.parrots

    @difficulty.expression
    def difficulty(cls):
        # this expression is used when querying the model
        return case(
            [(cls.created <= (datetime.utcnow() - timedelta(30)), cls.parrots * 10)],
            else_=cls.parrots
        )

и запросить ее с помощью:

session.query(Problem).order_by(Problem.difficulty.desc())
4
ответ дан davidism 15 August 2018 в 14:49
поделиться
  • 1
    могут ли методы с гибридным дескриптором иметь аргументы? – user2290820 18 May 2015 в 15:13
Другие вопросы по тегам:

Похожие вопросы: