Recentely I'm trying to making a flask-Sqlalchemy to calculate the total ammount of calories per day.
Everithing is working without errors but I got some issue with the tables relationship in the database, so in a nutshell the main problem is that everything I try to save for one user is also available for others.
Can somebody help me to set the tables properly?
Here my models:
from .extensions import db
from flask_login import UserMixin
from datetime import datetime
log_food = db.Table('log_food',
db.Column('log_id', db.Integer, db.ForeignKey('log.id'), primary_key=True),
db.Column('food_id', db.Integer, db.ForeignKey('food.id'), primary_key=True),
db.Column('quantity', db.Integer, default=1)
)
class Food(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50), unique=True, nullable=False)
proteins = db.Column(db.Integer, nullable=False)
carbs = db.Column(db.Integer, nullable=False)
fats = db.Column(db.Integer, nullable=False)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
@property
def calories(self):
return (self.proteins * 4) + (self.carbs * 4) + (self.fats * 9)
class Log(db.Model):
id = db.Column(db.Integer, primary_key=True)
date = db.Column(db.Date, nullable=False)
foods = db.relationship('Food', secondary=log_food, lazy='dynamic')
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
class User(db.Model, UserMixin):
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(100), unique=True)
password = db.Column(db.String(100))
name = db.Column(db.String(100))
foods = db.relationship('Food', backref='log_food', lazy=True)
logs = db.relationship('Log', backref='log_food', lazy=True)
ps: I'm not a pro.....:)
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…