Похожие чаты

Алхимия 2.0 У меня есть миксин модели. Хочу сделать этот миксин

абстрактным классом, но класс модель ругается на несовместимость метаклассов.
Есть ли какой-нибудь способ их совместить? В доке ничего не нашел. Судя по иерархии классов, для своего DeclarativeBase придется копировать какой-то технический код алхимии, чего делать особо не хочется

17 ответов

23 просмотра

Ненавижу такие проблемы, но решается если не ошибаюсь только скрещиванием двух метаклассов в один. https://docs.sqlalchemy.org/en/20/orm/extensions/declarative/ - или вот для 0.7.3 существовало abstract поле

Pavel-Павлик Автор вопроса
0xSecure
Ненавижу такие проблемы, но решается если не ошиба...

Эээ, AbstractConcreteBase это для реализации полиморфизма на уровне бд

class TimestampMixin(Base): __abstract__ = True created_at = Column(DateTime, default=current_timestamp()) updated_at = Column(DateTime, onupdate=current_timestamp()) class A(TimestampMixin, Base)

Убрать метакласс?

Pavel-Павлик Автор вопроса
Tishka17
Убрать метакласс?

Так метакласс предоставляется алхимией, чтобы моедли создавать

Pavel-Павлик Автор вопроса
Tishka17
А второй?

Какой второй?

Pavel Павлик
Какой второй?

Несовместимость метаклассов. Значит их два

Pavel-Павлик Автор вопроса
Tishka17
Несовместимость метаклассов. Значит их два

Первый метакласс — это метакласс алхимии, а второй — это ABCMeta

Pavel-Павлик Автор вопроса
Tishka17
Ну вот второй тебе зачем?

Чтобы абстракный метод засунуть в миксин

Pavel Павлик
Чтобы абстракный метод засунуть в миксин

Ну вот только Абц мета нужна лишь для рантайм проверок

Pavel Павлик
Чтобы абстракный метод засунуть в миксин

Нинада совать абстракцию в миксины

Миксины имеют четкое поведение и обычно их не мешают с абстрактными классами

0xSecure
Миксины имеют четкое поведение и обычно их не меша...

Точнее мешать их в абстрактный класс можно, но превращать совсем нежелательно

Pavel-Павлик Автор вопроса
0xSecure
Миксины имеют четкое поведение и обычно их не меша...

У меня есть миксин для таблиц, которые хранят историческое состояние. Этот миксин добавляет 5 полей, а также где-то 6 контрейнов и индексев. Для корректной работы всего остального кода, мне нужно доставать какие поля основной модели идентифицируют строку. То есть допустим, у меня есть таблица клиентов, у клиентов пк — это id. У меня есть таблица с историей состояния клиентов. Так вот мне надо указать, что поле id являлся пк у клиентов, чтобы потом правильно выстраивать историю

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

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
@Benzenoid can you tell me the easiest, and safest way to bu.y HEX now?
Živa Žena
20
This is a question from my wife who make a fortune with memes 😂😂 About the Migration and Tokens: 1. How will the old tokens be migrated to the new $LGCYX network? What is th...
🍿 °anton°
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
What is the Dex situation? Agora team started with the Pnetwork for their dex which helped them both with integration. It’s completed but as you can see from the Pnetwork ann...
Ben
1
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Anyone knows where there are some instructions or discort about failed bridge transactions ?
Jochem
21
@lozuk how do I get my phex copies of my ehex from a atomic wallet, to move to my rabby?
Justfrontin 👀
11
Карта сайта