gpt4 book ai didi

python - 将一个 SQLAlchemy 模型定义为与多个其他模型之一相关联

转载 作者:太空宇宙 更新时间:2023-11-04 08:01:15 25 4
gpt4 key购买 nike

我正在为自己的问答网站设计数据库,有点类似于Stack Overflow:

  1. 一个“问题”可以有多个“答案”,但一个“答案”只有一个“问题”。
  2. “问题”和“答案”都可以有多个“评论”,但一个“评论”只有一个“问题”或“答案”。

我不知道如何设计这样的数据库。这是我尝试过的:

class Question(db.Model):
__tablename__ = 'questions'
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.Unicode(64), unique=True)
body = db.Column(db.UnicodeText)
author_id = db.Column(db.Integer, db.ForeignKey('users.id'))
answers = db.relationship('Answer', backref='question', lazy='dynamic')

class Answer(db.Model):
__tablename__ = 'answers'
id = db.Column(db.Integer, primary_key=True)
body = db.Column(db.UnicodeText)
author_id = db.Column(db.Integer, db.ForeignKey('users.id'))
question_id = db.Column(db.Integer, db.ForeignKey('questions.id'))

class Comment(db.Model):
__tablename__ = 'comments'
id = db.Column(db.Integer, primary_key=True)
# post_id = db.Column(db.Integer, db.ForeignKey('')) ???

最佳答案

所以你已经做到了第一点。

您正在寻找的是一般关系。您可以在 sqlalchemy_utils 中找到它包。

from sqlalchemy_utils import generic_relationship


class Comment(db.Model):
__tablename__ = 'comments'
id = db.Column(db.Integer, primary_key=True)
object_type = db.Column(db.Unicode(255))
object_id = db.Column(db.Integer)
object = generic_relationship(object_type, object_id)

Docs对于一般关系

基本上它的作用是,它将 object_type 存储为答案或问题,将 object_id 存储为对象的主键。

关于python - 将一个 SQLAlchemy 模型定义为与多个其他模型之一相关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39677668/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com