Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Flask视图中使用多对多字段?_Python_Orm_Flask_Sqlalchemy_Flask Sqlalchemy - Fatal编程技术网

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

Python 如何在Flask视图中使用多对多字段?,python,orm,flask,sqlalchemy,flask-sqlalchemy,Python,Orm,Flask,Sqlalchemy,Flask Sqlalchemy,我正在尝试使用Flask创建一个博客。每个帖子可以有多个标签,每个标签也可以与多个帖子相关联。所以我建立了一种多对多的关系。我的问题是如何在创建新帖子时保存多个标签。既然每个帖子都可以有不同数量的标签,我该如何在表单中显示它?另外,我如何在帖子中创建新标签,然后在其他帖子中使用这些标签? 这是models.py- postcategory = db.Table('tags', db.Column('posts_id', db.Integer, db.ForeignKey('posts.i

我正在尝试使用Flask创建一个博客。每个帖子可以有多个标签,每个标签也可以与多个帖子相关联。所以我建立了一种多对多的关系。我的问题是如何在创建新帖子时保存多个标签。既然每个帖子都可以有不同数量的标签,我该如何在表单中显示它?另外,我如何在帖子中创建新标签,然后在其他帖子中使用这些标签? 这是models.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)
这是我正在研究的观点-

def create_article():
    if request.method == 'POST':
        if request.form.get('title') and request.form.get('content') and request.form.get('slug') and request.form.get('published'):
            post = Post(request.form['title'], request.form['content'], request.form['slug'], request.form['published'])

我确信有一个简单的解决方案,我只是让这个问题复杂化了,但我对web开发是新手,所以请帮助。

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

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

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

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

我放置了我正在处理的视图,如何从模板中获取类别?我放置了我正在处理的视图,如何从模板中获取类别?然后您应该查询类别并将其添加到ORM对象的
类别列表中。下面是一种获取或创建模型实例的方法。然后,您应该查询该类别并将其添加到ORM对象的
categories
列表中。下面是一种获取或创建模型实例的方法。