flask - 为模型选择过滤的嵌套外键以在烧瓶中编组
问题描述
我有一个带有相关外键问题的问卷模型(名为瓶子),并且有与问题模型相关的答案模型。
class Bottle(BaseModel):
b_name = db.Column(db.String(8))
questions = db.relationship('Question', backref='bottle')
is_deleted = db.Column(db.Boolean(), default=False)
class Question(BaseModel):
q_name = db.Column(db.String(32))
q_index = db.Column(db.Integer())
answers = db.relationship('Answer', backref='question')
q_bottle = db.Column(db.ForeignKey(Bottle.id))
is_deleted = db.Column(db.Boolean(), default=False)
class Answer(BaseModel):
a_index = db.Column(db.Integer())
a_name = db.Column(db.String(32))
a_score = db.Column(db.Integer())
a_question = db.Column(db.ForeignKey(Question.id))
is_deleted = db.Column(db.Boolean(), default=False)
在flask-restful中,我想将问卷数据回复到json,所以我
answer_fields = {
"id": fields.Integer,
"a_name": fields.String,
"a_score": fields.Integer,
"a_index": fields.Integer
}
question_fields = {
"id": fields.Integer,
"q_name": fields.String,
"q_index": fields.Integer,
"answers": fields.Nested(answer_fields)
}
bottle_fields = {
"questions": fields.Nested(question_fields),
"b_name": fields.String,
}
single_bottle_fields = {
"data": fields.Nested(bottle_fields),
"status": fields.Integer,
"msg": fields.String,
"request_time": fields.String
}
class BottleResource(Resource):
@marshal_with(single_bottle_fields)
def get(self, id):
bottle = Bottle.query.get(id)
data = {
"status": 201,
"msg": "Well Done!",
"data": bottle,
"request_time": request_time
}
return data
我想得到一瓶有问题的瓶子,他们的答案 is_deleted 是假的。
但是 marshal_with 的结果也将返回模型及其嵌套模型的所有外键。所以我会得到一个瓶子,里面有所有相关的问题。我只想要is_deleted == false的问题及其is_deleted == false的答案,并且由于答案嵌套在问题中,所以也许我不能只写一个def来重写问题的答案属性。
我怎样才能得到一个瓶子,只有他们的 is_deleted 为假的问题和他们的 is_deleted 的问题的答案也是假的?
谢谢!
解决方案
推荐阅读
- r - 更改 R 中的堆积条形图顺序
- python - 如何在python中对多个列表进行排序
- django - Django 正在删除并重新创建模型而不是重命名
- c# - 将 POCO 类引入现有解决方案
- python - Django server running but can't hit url
- spring-boot - 如果 Mono 为空,则创建未找到的 ServerResponse
- android - 我怎样才能对这些句子进行排序
- domain-driven-design - 读取可用数据和选定数据的模型
- ios - 圆圈没有在视图的中心绘制
- scala - Flink 连接 Cassandra 进行读取