Chciałbym zadeklarować klasę bazową, która sprzeciwia wszystkie inne schematu może dziedziczyć, na przykład:Jak zadeklarować klasę modelu podstawowego w Flask-SQLAlchemy?
class Base(db.Model):
created_on = db.Column(db.DateTime, default=db.func.now())
updated_on = db.Column(db.DateTime, default=db.func.now(), onupdate=db.func.now())
Wtedy wszystkie inne obiekty schematu może dziedziczyć z niej i nie trzeba powtarzać deklarację dwóch kolumny.
Jak to zrobić w Flask-SQLAlchemy?
from flask.ext.sqlalchemy import SQLAlchemy
db = SQLAlchemy(app)
class User(db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key = True)
email = db.Column(db.String(255), unique = True)
To działa. Ponadto, aby trochę uprościć, możesz usunąć '__tablename__' w grupie dzieci i zamiast tego dodać do elementu nadrzędnego: @declared_attr def' __tablename__' (cls): return cls.'namename__' .lower() – Heliodor
@Heliodor To byłoby domyślne zachowanie, które otrzymałeśby bez '__tablename__' w ogóle. "__tablename__" zostało określone, ponieważ OP chciał, aby był to liczba mnoga 'users' zamiast pojedynczego' user'. – pydsigner
Nowy link do dokumentu: http://docs.sqlalchemy.org/en/latest/orm/extensions/declarative/api.html#abstract – siulkilulki