title: SQLAlchemy relationship with association_proxy problems
body: <p>I've been wading through many website to try to understand what's going on, but I really need some direct help.  I'm sorry if I missed something obvious in the docs.</p>
  
  <p>Here's what I'm trying to do (I've cut out everything but the essential code):</p>
  
  <pre><code>Base = declarative_base()
  
  class User(Base):
      __tablename__ = 'user'
      login = Column(String(60), primary_key=True, nullable=False)
  
      groups = association_proxy('user_to_groups', 'group', creator=lambda group: UserToGroup(group_name=group.name))
  
      def __init__(self, login, groups=None):
          self.login = login
          if groups:
              for group in groups:
                  self.groups.append(group)
  
  
  class Group(Base):
      __tablename__ = 'group'
      name = Column(String(100), primary_key=True, nullable=False)
      description = Column(String(100), nullable=True)
  
      users = association_proxy('group_to_user', 'user', creator=lambda user: UserToGroup(user_login=user.login))
  
      def __eq__(self, other):
          return self.name == other.name
  
  
  class UserToGroup(Base):
      __tablename__ = 'user_to_group'
      user_login = Column(String(60), ForeignKey(User.login), primary_key=true)
      group_name = Column(String(100), ForeignKey(Group.name), primary_key=true)
  
      user = relationship(User, backref='user_to_groups', cascade='all') #, cascade="all, delete"  #, delete-orphan ?
      group = relationship(Group, backref='group_to_user', cascade='all') #, cascade="all, delete"  #, delete-orphan ?
  
  
  group1 = Group(name ="g:superadmin")
  group2 = Group(name ="g:admin")
  session.add_all([group1, group2])
  session.flush()
  user1 = User(login = "test", groups=[group1, group2])
  session.add(user1)
  session.flush()
  
  
  user1 = session.query(User).filter(User.login=='test').one()
  print(user1.user_to_groups)
  print(type(user1.groups), dir(user1.groups))
  user1.groups.remove(Group(name='g:admin'))
  </code></pre>
  
  <p>And here's the response traceback after trying to run <code>user1.groups.remove(Group(name='g:admin'))</code>:</p>
  
  <blockquote>
    <p>AssertionError: Dependency rule tried to blank-out primary key column 'user_to_group.user_login' on instance '&lt;UserToGroup at 0x7f33f49bd190>'</p>
  </blockquote>
  
  <p>What I want it to do is simply delete the row in the <code>user_to_group</code> table and update the objects accordingly to reflect the change.</p>
  
  <p>I had it working before when the relationship table wasn't mapped to an object, <a href="https://stackoverflow.com/questions/15958338/logging-versions-with-sqlalchemy-including-relationship-tables">but I need it to be mapped to an object to use inheritance</a> </p>