У меня есть модель вопросника (которая называется bottle) с соответствующими вопросами по внешнему ключу, и модель ответов имеет отношение к модели вопроса.
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 -прекрасный Я хочу ответить на вопросник данные для 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
Я хочу получить bottle с вопросами и ответами на них, is_deleted является ложным.
, но результат marshal_with вернет все иностранные ключи для модели и ее вложенной модели тоже. Так что я получу bottle, у которого есть все связанные вопросы. Мне нужны только те вопросы, которые is_deleted == false, и их ответы is_deleted == false, а так как ответы вложены в вопросы, поэтому, возможно, я не могу просто написать def, чтобы переписать атрибут ответа вопроса.
Как я могу получить bottle, в котором есть только вопросы, для которых is_deleted является ложным, а ответы на вопросы, для которых is_deleted тоже ложные?
Спасибо!