Vorrei dichiarare una classe base che tutti gli oggetti altro schema può ereditare, per esempio:Come si dichiara una classe del modello base in 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())
Poi tutti gli altri oggetti schema può ereditare da esso e non devono ripetere la dichiarazione dei due colonne.
Come farei questo in 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)
Questo è il trucco. Inoltre, per semplificare un po ', puoi rimuovere il '__tablename__' nei figli e aggiungere al genitore: @declared_attr def' __tablename__' (cls): return cls.'__name__'.lower() – Heliodor
@Heliodor Sarebbe solo il comportamento predefinito che otterresti senza il "__tablename__". '__tablename__' è stato specificato perché l'OP voleva che fosse plurale' users' piuttosto che singolare 'user'. – pydsigner
Nuovo collegamento a doc: http://docs.sqlalchemy.org/en/latest/orm/extensions/declarative/api.html#abstract – siulkilulki