Official solution
SimpleRelationships tables ko jodti hain taaki related data object se mil jaaye.
One-to-Many: User → kai Posts. posts = relationship('Post', backref='author'). FK post.user_id.
One-to-One: User → Profile. uselist=False + unique FK. Profile.user_id unique.
Many-to-Many: Student ↔ Drive. Junction/secondary table (student_id, drive_id).
Example 1-1:
class Profile(db.Model):
user_id = db.Column(db.Integer, db.ForeignKey('user.id'), unique=True)
user = db.relationship('User', back_populates='profile', uselist=False)
1-M ko 1-1: child FK pe unique=True + uselist=False.
Parent-child: parent PK, child FK. Junction table extra columns bhi rakh sakti hai (applied_on).
Simplemodels.py har table ki class hai — columns, PK/FK, relationships. Yeh Model layer hai.
Viva mein file khol ke bolo:
1) Kaunsi classes/tables hain (User, Role-specific, Booking...)
2) Har table ka kaam 1 line
3) Relationships: 1-1 / 1-M / M-M, backref, cascade, lazy
4) Constraints: unique email, nullable, default status
Example skeleton
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(120), unique=True, nullable=False)
role = db.Column(db.String(20), default='user')
bookings = db.relationship('Booking', backref='user', cascade='all, delete-orphan')
ER diagram: rectangles entities, lines relationships, PK/FK mark. Schema = yahi structure.
Tables create: db.create_all() ya migrations. SQLite file SQL viewer se dikha sakte ho.
Simple 4-step: Model → DB → Form → Route → Template. Yeh sabse common live-coding hai.
1) models.py: age = db.Column(db.Integer, nullable=True)
2) DB: SQLite viewer se column, ya DB delete karke create_all, ya ALTER TABLE user ADD COLUMN age INTEGER; production mein Flask-Migrate.
3) register.html: <input type='number' name='age' min='18' required>
4) route: user.age = request.form.get('age', type=int); commit
5) dashboard: {{ user.age }} admin table mein <td>{{ u.age }}</td>
Print terminal: print('AGE', request.form.get('age'))
Phone/city same pattern, String(20). Openings on Drive: integer column + form + create_drive route.