How to create table with two foreign keys?

Viewed 30

enter image description here

from wsgiref.util import request_uri
from flask import Flask, render_template, request, redirect
from flask_sqlalchemy import SQLAlchemy
from datetime import datetime
from sqlalchemy.orm import declarative_base, relationship

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = "sqlite:///todo.db"
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)

class List(db.Model):
    listid=db.Column(db.Integer,primary_key=True)
    namelist= db.Column(db.String(200), primary_key=True,nullable=False)
    



class Card(db.Model):
    
    listid=db.Column(db.Integer,db.ForeignKey("list.listid"),nullable=False)
    namelist=db.Column(db.Integer,db.ForeignKey("list.namelist"),nullable=False)
    Title = db.Column(db.String(200), primary_key=True,nullable=False)
    Content = db.Column(db.String(500), nullable=False)
    Deadline = db.Column(db.Date)



if __name__ == "__main__":
    app.run(debug=True)

When I am creating the database using one foreign key from the List table my code is working fine but whenever I am recreating my database and using two foreign keys in my Card table, I am unable to populate my database.

1 Answers

Mistake is "namelist" is Integer type, but reference column list.namelist is String(200)

class Card(db.Model):
    ...
    namelist = db.Column(db.String(200), db.ForeignKey("list.namelist"), nullable=False)
    ...
 
Related