Я разрабатываю систему ведения блогов, используя Angular (Front-end) и Flask (Back-end). База данных, используемая для этого приложения: sqlite .
У меня есть блог и таблица тегов, которые следуют соотношению «многие ко многим»:
class Blog(db.Model):
id = db.Column(db.Integer,primary_key=True)
authorname=db.Column(db.String(128),nullable=False)
title=db.Column(db.String(128),nullable=False)
content=db.Column(db.Text,nullable=False)
user_id=db.Column(db.Integer,db.ForeignKey('user.id'))
tags= db.relationship('Tag',secondary=tags_blog,backref=db.backref('blogs_associated',lazy="dynamic"))
featured_image= db.Column(db.String,nullable=False)
updated_at = db.Column(db.DateTime, default=datetime.utcnow)
upvotes= db.Column(db.Integer, default=0)
class Tag(db.Model):
id=db.Column(db.Integer,primary_key=True)
name=db.Column(db.String(100))
tags_blog = db.Table('tags_blog',
db.Column('blog_id', db.Integer,db.ForeignKey('blog.id')),
db.Column('tag_id',db.Integer,db.ForeignKey('tag.id'))
)
У меня есть маршрут в серверной части, который запрашивает и возвращает блог с указанными c id,
@blogs.route('/blog/<int:id>', methods=["GET"])
def show_blog(id):
blog_by_id= Blog.query.filter_by(id=id).first_or_404()
found_blog ={
"id": blog_by_id.id,
"title":blog_by_id.title,
"content":blog_by_id.content,
"authorname":blog_by_id.authorname,
"featured_image":blog_by_id.featured_image,
"tags":[]
}
return jsonify({"blog": found_blog})
Как видно из маршрута, свойство tags внутри found_blog пусто, поскольку при попытке добавить blog_by_id.tags к свойству tags я получаю сообщение об ошибке: Объект типа Tag не JSON serializable .
Я пробовал следующий код, но получил ту же ошибку:
for x in blog_by_id.tags:
found_blog["tags"].append(x)
Как получить доступ к тегам, относящимся к каждому блогу, чтобы я мог вернуть полные сведения о блоге на стороне клиента?