Ausgabe
Ich habe eine Flask-Anwendung, die ich in Django konvertieren möchte. In einem der Modelle, die ein abstraktes Basismodell erben, wird es als erwähnt
__table_args__ = {'extend_existing': True}
Kann jemand bitte anhand eines kleinen Beispiels erklären, was dies in SQLAlchemy bedeutet.
Ich habe einige Artikel durchgesehen, aber als ich an Django gearbeitet habe und neu bei Flask-SQLAlchemy war, konnte ich es nicht richtig verstehen.
https://hackersandslackers.com/manage-database-models-with-flask-sqlalchemy/
https://docs.sqlalchemy.org/en/13/orm/extensions/declarative/table_config.html
Lösung
Wenn auf True gesetzt, teilt dies mit, dass die Tabelle bereits in den Metadaten vorhanden ist. Dieser Parameter soll bestimmen, ob diese Tabelle neue Spalten für ihre erbenden Klassen hinzufügen oder sozusagen „erweitern“ darf.
Ich habe zum Beispiel:
class User(Base):
__table_args__ = {'extend_existing': True}
attr1 = Column(String)
attr2 = Column(Integer)
class ChildUser(User):
attr3 = Column(Integer) # this will allow this column to 'extend' the parent attriubtes.
Dieser Parameter ist standardmäßig auf „False“ gesetzt, und normalerweise möchten Sie diese Einstellung nicht ändern.
Beantwortet von – Jinghui Niu
Antwort geprüft von – David Goodson (FixError Volunteer)