I have a many-to-many relationship in my models. This is what they look 
like:

class Post(db.Model):
    __tablename__ = 'Posts'
    id = db.Column(db.Integer, primary_key=True)
    tags_relationship = db.relationship('Tag', secondary=tags, backref=db.
backref('posts', lazy='dynamic'))
    tags = association_proxy('tags_relationship', 'text')
    full_text = db.Column(db.Text, nullable=True)
    fulltext_vector = db.Column(TSVectorType('full_text'))



class Tag(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    text = db.Column(db.String(255))


tags = db.Table('tags',
                db.Column('tag_id', db.Integer, db.ForeignKey('tag.id')),
                db.Column('post', db.Integer, db.ForeignKey('Posts.id'))
                )

I need to add the ability to edit tags. I know how to add tags:

def edit(id, tags=None):
    edit_post = Post.query.get(id)
    if tags is not None and tags != "":
        for tag in tags.split(','):
            tag = tag.strip(" ")
            if tag not in edit_post.tags:
                add_tags = Tag()
                add_tags.text = tag
                edit_post.tags_relationship.append(add_tags)
                db.session.add(add_tags)
                db.session.commit()

This is what I'm doing for removing tags:

        for tag in edit_post.tags:
            if tag not in tags:
                edit_post.tags.remove(tag)
                db.session.commit()

However, I can not delete the last remaining tag from a post. Once I add a 
tag, it seems like there has to be a minimum of 1 tag on that post, as I 
can add more, and I can remove all but the last remaining tag. 

What am I doing wrong? 

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to