如何在Flask视图中使用多对多字段?

2024-09-28 05:25:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用Flask创建一个博客。每个帖子可以有多个标签,每个标签也可以与多个帖子关联。所以我建立了一种多对多的关系。我的问题是如何在创建新帖子时保存多个标记。既然每个帖子都可以有不同数量的标签,我如何在表单中显示这一点呢?另外,我如何在文章中创建新标签,然后将这些标签与其他帖子一起使用? 这是py模型-在

postcategory = db.Table('tags',
    db.Column('posts_id', db.Integer, db.ForeignKey('posts.id')),
    db.Column('categories_id', db.Integer, db.ForeignKey('categories.id'))
)

class Post(db.Model):
    __tablename__ = 'posts'
    id = db.Column(db.Integer, primary_key=True)     
    title = db.Column(db.String)
    content = db.Column(db.Text)
    slug = db.Column(db.String, unique=True)
    published = db.Column(db.Boolean, index=True)
    timestamp = db.Column(db.DateTime, index=True)
    categories = db.relationship('Category', secondary=postcategory, backref='posts' )

    def __init__(self, title, content):
        self.title = title
        self.content = content

class Category(db.Model):
    __tablename__ = 'categories'
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String, index=True)

这是我正在研究的观点-

^{pr2}$

我相信有一个简单的解决方案,我只是把这复杂化了,但我是新的网站开发,所以请帮助。在


Tags: selfidtruedbstringindextitlecolumn
1条回答
网友
1楼 · 发布于 2024-09-28 05:25:02

您可以使用getlist从表单中拉出类别,并将它们添加到Post对象中。如果您有如下复选框:

<form>
    <input type="checkbox" name="categories" value="foo">
    <input type="checkbox" name="categories" value="bar" checked>
</form>

在视图方法中,您只需执行以下操作:

^{pr2}$

相关问题 更多 >

    热门问题