I looked at my code some more, and found a now obvious mistake. I changed 
my code to:

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()
        for tag in edit_post.tags:
            if tag not in tags:
                edit_post.tags.remove(tag)
                db.session.commit()
    else:
         for tag in edit_post.tags:
                edit_post.tags.remove(tag)
                db.session.commit()

However, now if I remove all the tags from a post, a last one remains, and 
I have to remove it again to get rid of all the tags. 

On Monday, February 23, 2015 at 1:46:07 AM UTC+5:30, Asad Dhamani wrote:
>
> 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