app2.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. from flask import Flask
  2. from flask_sqlalchemy import SQLAlchemy
  3. import flask_admin as admin
  4. from flask_admin.contrib import sqla
  5. # Create application
  6. app = Flask(__name__)
  7. # Create dummy secrey key so we can use sessions
  8. app.config['SECRET_KEY'] = '123456790'
  9. # Create in-memory database
  10. app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///sample_db_2.sqlite'
  11. app.config['SQLALCHEMY_ECHO'] = True
  12. db = SQLAlchemy(app)
  13. # Flask views
  14. @app.route('/')
  15. def index():
  16. return '<a href="/admin/">Click me to get to Admin!</a>'
  17. class Car(db.Model):
  18. __tablename__ = 'cars'
  19. id = db.Column(db.Integer, primary_key=True, autoincrement=True)
  20. desc = db.Column(db.String(50))
  21. def __str__(self):
  22. return self.desc
  23. class Tyre(db.Model):
  24. __tablename__ = 'tyres'
  25. car_id = db.Column(db.Integer, db.ForeignKey('cars.id'), primary_key=True)
  26. tyre_id = db.Column(db.Integer, primary_key=True)
  27. car = db.relationship('Car', backref='tyres')
  28. desc = db.Column(db.String(50))
  29. class CarAdmin(sqla.ModelView):
  30. column_display_pk = True
  31. form_columns = ['id', 'desc']
  32. class TyreAdmin(sqla.ModelView):
  33. column_display_pk = True
  34. form_columns = ['car', 'tyre_id', 'desc']
  35. # Create admin
  36. admin = admin.Admin(app, name='Example: SQLAlchemy2', template_mode='bootstrap3')
  37. admin.add_view(CarAdmin(Car, db.session))
  38. admin.add_view(TyreAdmin(Tyre, db.session))
  39. if __name__ == '__main__':
  40. # Create DB
  41. db.create_all()
  42. # Start app
  43. app.run(debug=True)