Я обнаружил, что могу установить порядок столбцов (в последнюю позицию) в Mixin, используя:
@declared_attr
def notes(cls):
col = sa.Column(sa.String(4000) , nullable=False, default='')
# get highest column order of all Column objects of this class.
last_position = max([value._creation_order
for key, value in vars(cls).items()
if isinstance(value, Column)])
col._creation_order = last_position + 0.5
return col
class Service(Base, NotesMixin):
__tablename__ = "service"
service_id = sa.Column(sa.Integer, primary_key=True)
name = sa.Column(sa.String(255), nullable=False, index=True, unique=True)
Чтобы установить порядок столбцов на основании расположения другого столбца (аналогично
blockquote>
alter table `some_table` modify `some_colum` `some_type` after `some_other_column;
см. https://stackoverflow.com/a/3822219/488331 )
Вы можете использовать:
@declared_attr def notes(cls): col = sa.Column(sa.String(4000) , nullable=False, default='') col._creation_order = cls.some_other_column._creation_order + 0.5 return col
ПРИМЕЧАНИЕ. Если вы используете
+ 1
, вы получите 2 столбца назад. Я действительно не понимаю, почему вы даже можете использовать десятичное число.Чтобы установить порядок столбцов, основанный на местоположении первого столбца (сделайте это всегда 4-й столбец), вы можете сделать:
@declared_attr def notes(cls): col = sa.Column(sa.String(4000) , nullable=False, default='') # get lowest column order of all Column objects of this class. start_position = min([value._creation_order for key, value in vars(cls).items() if isinstance(value, Column)]) col._creation_order = start_position + 3.5 return col
Похоже, вам просто нужно отключить фильтр даты, потому что он фильтрует все данные за вчера до расчета выручки