Flask-SQLAlchemy多对多插入

寂静的日子

Flask SQLAlchemy多对多插入数据

我已经尝试了上述建议,但是在插入带有标签的新帖子时,在多对多属性的追加中继续收到以下错误。

任何方向将不胜感激!

下午1:06:22 web.1 | post.tags.append(post_tag)

下午11:06:22 web.1 | 附录中的文件“ /home/trevor/Projects/trevorblog/venv/local/lib/python2.7/site-packages/sqlalchemy/orm/collections.py”,第1072行

下午11:06:22 web.1 | 物品= __set(自我,物品,_sa_initiator)

下午11:06:22 web.1 | __set中的文件“ / home / trevor / Projects / trevorblog / venv / local /lib/python2.7/site-packages/sqlalchemy/orm/collections.py”,第1044行

下午11:06:22 web.1 | item = executor.fire_append_event(项目,_sa_initiator)

下午11:06:22 web.1 | 在fire_append_event中,文件“ /home/trevor/Projects/trevorblog/venv/local/lib/python2.7/site-packages/sqlalchemy/orm/collections.py”,第716行

下午11:06:22 web.1 | 项目,发起人)

下午11:06:22 web.1 | 文件“ /home/trevor/Projects/trevorblog/venv/local/lib/python2.7/site-packages/sqlalchemy/orm/attributes.py”,行936,在fire_append_event中

下午11:06:22 web.1 | 启动器或self._append_token或self._init_append_token())

下午11:06:22 web.1 | 文件“ /home/trevor/Projects/trevorblog/venv/local/lib/python2.7/site-packages/sqlalchemy/orm/attributes.py”,行1171,位于emit_backref_from_collection_append_event中

下午11:06:22 web.1 | child_state,child_dict = instance_state(child),\

下午11:06:22 web.1 | AttributeError:“ BaseQuery”对象没有属性“ _sa_instance_state”

型号

blog_tag = db.Table('post_tag',
db.Column('post_id', db.Integer, db.ForeignKey('post.id')),
db.Column('tag_id', db.Integer, db.ForeignKey('tag.id'))
)

class Post(db.Model):
    """SQLAlchemy Post object class"""
    id = db.Column(db.Integer, primary_key=True)
    body = db.Column(db.Text)
    timestamp = db.Column(db.DateTime)    
    title = db.Column(db.String(50))
    author = db.Column(db.Integer, db.ForeignKey('user.id'))
    uuid = db.Column(db.String(255))
    tags = db.relationship('Tag',secondary=blog_tag, 
                        back_populates="posts")

class Tag(db.Model):
    """SQLAlchemy Tag object class"""
    id=db.Column(db.Integer, primary_key=True)
    name=db.Column(db.String, unique=True, nullable=False)
    posts = db.relationship('Post', secondary = blog_tag,
                            back_populates = "tags")

Views.py

@console.route('/new_post', methods=['GET', 'POST'])
@login_required
def new_post():
    post_form = PostForm()
    if post_form.validate_on_submit():
        """Take the list of tags and turn them into an array"""
       uid = uuid.uuid4()
       post = Post()
       post.title = post_form.title.data
       post.body = post_form.body.data
       post.timestamp = datetime.utcnow()
       post.author = current_user.id
       post.uuid = uid.hex
       tag_string = post_form.tags.data
       tags = tag_string.split(",")
       for tag in tags:
           post_tag = add_tags(tag)
           print post_tag
           post.tags.append(post_tag)
       db.session.add(post)
       db.session.commit()
       flash (u'New Post Created!', 'alert-info')
    return render_template('new_post.html',
                title='Admin-New Post',
                form=post_form)

def add_tags(tag):
    existing_tag = Tag.query.filter(Tag.name == tag.lower())
    """if it does return existing tag objec to list"""
    if existing_tag is not None:
        return existing_tag
    else:
       new_tag = Tag()
       new_tag.name = tag.lower()
       return new_tag
安德里亚·雷纳(Andrea Reina)

这:

existing_tag = Tag.query.filter(Tag.name == tag.lower())
"""if it does return existing tag objec to list"""
if existing_tag is not None:
    return existing_tag

不会传回Tag,而是传Query您想Tag.query.filter(...).one_or_none()获取标签本身。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

设置多对多sqlalchemy flask app sqlite db的插入顺序

来自分类Dev

Flask-SQLAlchemy多对多

来自分类Dev

如何使用flask-sqlalchemy多次插入多对多关系?

来自分类Dev

Flask-SQLAlchemy查询多对多

来自分类Dev

使用Flask-SQLAlchemy选择多对多

来自分类Dev

Flask SQLAlchemy多对多删除元素

来自分类Dev

SqlAlchemy(Postgres + Flask):如何求和多列?

来自分类Dev

SQLAlchemy + Flask多对一关系

来自分类Dev

SqlAlchemy(Postgres + Flask):如何求和多列?

来自分类Dev

使用Flask-SQLAlchemy进行多对多查询

来自分类Dev

Jsonify Flask-SQLAlchemy Flask中的多对一关系

来自分类Dev

通过Flask显示好友名称多对多sqlalchemy

来自分类Dev

Flask-Sqlalchemy 3种多对多关系

来自分类Dev

Flask-Sqlalchemy,多对多关系中的辅助表的主键

来自分类Dev

我应该使用flask sqlalchemy多对多关系吗?

来自分类Dev

Flask-SQLAlchemy筛选与父模型的多对多关系

来自分类Dev

Flask-SQLAlchemy更新一对多记录

来自分类Dev

Jsonify flask-sqlalchemy烧瓶中的多对一关系

来自分类Dev

Flask-Sqlalchemy,多对多关系中的辅助表的主键

来自分类Dev

在Flask sqlalchemy中订购一对多模型?

来自分类Dev

Flask-SQLAlchemy查询带有多个必需标签的多对多标签

来自分类Dev

Flask SQLalchemy-多对多-显示带有所有标签的照片(或包含所有帖子的博客等)

来自分类Dev

使用Flask,WTForm,SQLAlchemy和Jinja2的完整多对一示例

来自分类Dev

如何使用带有额外数据的Flask-sqlalchemy创建多对多关联?

来自分类Dev

Flask-appbuilder多对多关系sqlalchemy.exc.NoReferencedTableError错误

来自分类Dev

如何在SQLAlchemy(python,flask)中为模型用户创建多对多关系

来自分类Dev

Flask / SQLAlchemy-多对多关系的关联模型和关联表之间的区别?

来自分类Dev

使用多对多关系时,Flask-SQLAlchemy返回查询中的对象

来自分类Dev

如何在SQLAlchemy(python,flask)中为模型用户创建多对多关系

Related 相关文章

  1. 1

    设置多对多sqlalchemy flask app sqlite db的插入顺序

  2. 2

    Flask-SQLAlchemy多对多

  3. 3

    如何使用flask-sqlalchemy多次插入多对多关系?

  4. 4

    Flask-SQLAlchemy查询多对多

  5. 5

    使用Flask-SQLAlchemy选择多对多

  6. 6

    Flask SQLAlchemy多对多删除元素

  7. 7

    SqlAlchemy(Postgres + Flask):如何求和多列?

  8. 8

    SQLAlchemy + Flask多对一关系

  9. 9

    SqlAlchemy(Postgres + Flask):如何求和多列?

  10. 10

    使用Flask-SQLAlchemy进行多对多查询

  11. 11

    Jsonify Flask-SQLAlchemy Flask中的多对一关系

  12. 12

    通过Flask显示好友名称多对多sqlalchemy

  13. 13

    Flask-Sqlalchemy 3种多对多关系

  14. 14

    Flask-Sqlalchemy,多对多关系中的辅助表的主键

  15. 15

    我应该使用flask sqlalchemy多对多关系吗?

  16. 16

    Flask-SQLAlchemy筛选与父模型的多对多关系

  17. 17

    Flask-SQLAlchemy更新一对多记录

  18. 18

    Jsonify flask-sqlalchemy烧瓶中的多对一关系

  19. 19

    Flask-Sqlalchemy,多对多关系中的辅助表的主键

  20. 20

    在Flask sqlalchemy中订购一对多模型?

  21. 21

    Flask-SQLAlchemy查询带有多个必需标签的多对多标签

  22. 22

    Flask SQLalchemy-多对多-显示带有所有标签的照片(或包含所有帖子的博客等)

  23. 23

    使用Flask,WTForm,SQLAlchemy和Jinja2的完整多对一示例

  24. 24

    如何使用带有额外数据的Flask-sqlalchemy创建多对多关联?

  25. 25

    Flask-appbuilder多对多关系sqlalchemy.exc.NoReferencedTableError错误

  26. 26

    如何在SQLAlchemy(python,flask)中为模型用户创建多对多关系

  27. 27

    Flask / SQLAlchemy-多对多关系的关联模型和关联表之间的区别?

  28. 28

    使用多对多关系时,Flask-SQLAlchemy返回查询中的对象

  29. 29

    如何在SQLAlchemy(python,flask)中为模型用户创建多对多关系

热门标签

归档