Похожие чаты

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

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

17 ответов

5 просмотров

Ненавижу такие проблемы, но решается если не ошибаюсь только скрещиванием двух метаклассов в один. 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 Павлик
Чтобы абстракный метод засунуть в миксин

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

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

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

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

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

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

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

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

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

Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
55
We heading to 1.1$ 🤔?
CryptoBo$$
35
Сonst magicTgHTML = (text, entities) => { let processedText = text; let offsetShift = 0; entities.forEach(entity => { const { offset, length, type, url, ...
Андрей
1
A couple thoughts from a random internet stranger: 1. If you want this project to gain traction you cannot keep being negative. If I just came here after finding out about Kd...
Eric Wild
45
Здравствуйте товарищи! решил всё таки поставить линукс. Порядок создание разделов /boot/efi 200МиБ; /boot 1000; подсистему / 80000; swap 8Гб Будет норм?
K2
19
How Will #Monero Be Attacked? First of all I want to tell you that this is not teaching the network attackers, the central regulators. They already know how to attack the net...
Li₿ΞʁLiøη
3
#wazirx 15 May my account has fund of rupees 10000 but 16 May my balance is showing 8200 why?? Without any withdrawal
Learnwi
12
подскажите пожалуйста, как мне освободить результат записанный в переменную result? в чем проблема подскажите если МОЖЕТЕ?
Михаил Helper
28
Can you help a noob? I know LTC was one of the early alt coins. But what is the benefit of it today? What are its attributes? Why should I be bullish on it this bull run?
CryptoNoobian ($PEPI)
11
есть тут кто-то , кто только начал изучать си? если проходите курс на степике или как-то сами изучаете, пишите, может, скооперируемся?..
Eule
25
Карта сайта