クラス図をデータベース テーブルにマッピングしようとしています。サービスクラスを継承する修理クラスがあります。しかし、それを行おうとすると、「service」と「repair」の間に外部キー関係が見つかりません
と表示されます。
これが私の完全なコードです。
from flask import Flask, request, jsonify
from flask_sqlalchemy import SQLAlchemy
from flask_marshmallow import Marshmallow
from sqlalchemy import ForeignKey
import os
app = Flask(__name__)
basedir = os.path.abspath(os.path.dirname(__file__))
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'db.sqlite')
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
database = SQLAlchemy(app)
ORM = Marshmallow(app)
# Models
# Service Model
class Service(database.Model):
service_id = database.Column(database.Integer, primary_key=True)
image_url = database.Column(database.String(255))
jewellery_type = database.Column(database.String(50))
def __init__(self, image_url, jewellery_type):
self.image_url = image_url
self.jewellery_type = jewellery_type
# Service Schema
class ServiceSchema(ORM.Schema):
class Meta:
fields = ('service_id', 'image_url', 'jewellery_type')
# Initialize Service Schema
service_schema = ServiceSchema()
Service_schema_all = ServiceSchema(many=True)
# repair Model
class Repair(Service):
repair_id = database.Column(database.Integer, ForeignKey('service_id'), primary_key=True)
damage_type = database.Column(database.String(50))
repair_type = database.column(database.String(50))
def _init__(self, repair_id, damage_type, repair_type):
self.repair_id = repair_id
self.damage_type = damage_type
self.repair_type = repair_type
# repair Schema
class RepairSchema(ORM.Schema):
class Meta:
fields = ('repair_id', 'damage_type', 'repair_type')
# Initialize Repair Schema
repair_schema = RepairSchema()
repair_schema_all = RepairSchema(many=True)
# start the server
if __name__ == '__main__':
app.run(debug=True)
非常に多くの調査を行いましたが、まだ問題を解明できません。
– シハラ・ディルシャン
2020 年 11 月 25 日 9:41
------------------------
この参照を変更してみてください
ForeignKey('service_id')
へ
ForeignKey('service.service_id').
2021 年 1 月 27 日 16:36 に回答
ブラヴヘク
ブラヴヘク
165
6
銅バッジ 6 個