In [1]: i1 = Ingredient(name='Orange Juice')
In [2]: i2 = Ingredient(name='Tequila')
In [3]: di1 = DrinkIngredient(ingredient=i1, units=2)
In [4]: di1
Out[4]: <DrinkIngredient 2.000000 units of Orange Juice>
In [5]: di2 = DrinkIngredient(ingredient=i2, units=1)
In [6]: di2
Out[6]: <DrinkIngredient 1.000000 units of Tequila>
In [7]: d = Drink(name='Tequila Sunrise')
In [8]: d.Ingredients.append([di1, di2])
In [9]: d.Ingredients.append(di1)
In [10]: d.Ingredients.append(di2)
In [11]: d
Out[11]: <Drink 'Tequila Sunrise'>
In [12]: d.Ingredients
Out[12]:
[<DrinkIngredient 2.000000 units of Orange Juice>,
<DrinkIngredient 1.000000 units of Tequila>]
Created
June 29, 2016 16:28
-
-
Save anonymous/54226fbe793b5eb4aae28ad9c2a8116e to your computer and use it in GitHub Desktop.
Drinks Sqla
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from flask_sqlalchemy import SQLAlchemy | |
from flask import Flask | |
app = Flask(__name__) | |
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///drinks.db' | |
db = SQLAlchemy(app) | |
class DrinkIngredient(db.Model): | |
id = db.Column(db.Integer, primary_key=True) | |
ingredient_id = db.Column(db.Integer, db.ForeignKey('ingredient.id')) | |
drink_id = db.Column(db.Integer, db.ForeignKey('drink.id')) | |
ingredient = db.relationship("Ingredient", uselist=False) | |
drink = db.relationship("Drink", uselist=False) | |
units = db.Column(db.Float) | |
def __repr__(self): | |
return '<DrinkIngredient %f units of %s>' % (self.units, self.drink.name) | |
class Drink(db.Model): | |
__tablename__ = 'drink' | |
id = db.Column(db.Integer, primary_key=True) | |
name = db.Column(db.String(64), index=True, unique=True) | |
Ingredients = db.relationship('DrinkIngredient') | |
def __init__(self, name): | |
self.name = name | |
def __repr__(self): | |
return '<Drink %r>' % (self.name) | |
class Ingredient(db.Model): | |
__tablename__ = 'ingredient' | |
id = db.Column(db.Integer, primary_key=True) | |
name = db.Column(db.String(140)) | |
def __init__(self, name): | |
self.name = name | |
def __repr__(self): | |
return '<Ingredient %r>' % (self.name) | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from flask_script import Manager, Shell | |
from app import db, app, Drink, Ingredient, DrinkIngredient | |
manager = Manager(app) | |
def make_shell_context(): | |
return dict(db=db, Drink=Drink, Ingredient=Ingredient, DrinkIngredient=DrinkIngredient) | |
manager.add_command('shell', Shell(make_context=make_shell_context)) | |
if __name__ == '__main__': | |
manager.run() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
the #18 line is now -
return '<DrinkIngredient %f units of %s>' % (self.units, self.drink.name)
should be
return '<DrinkIngredient %f units of %s>' % (self.units, self.ingredient.name)