Skip to content

Instantly share code, notes, and snippets.

@singingwolfboy
Last active August 29, 2015 14:27
Show Gist options
  • Save singingwolfboy/3c504ed6b1b8d178420e to your computer and use it in GitHub Desktop.
Save singingwolfboy/3c504ed6b1b8d178420e to your computer and use it in GitHub Desktop.
How do I make SQLAlchemy understand that when I refer to User.hipchat_group, it should do a join through the one-to-one User.hipchat_user relation?
from datetime import datetime
from sqlalchemy.orm import backref
from hiptweet import db, login_manager
class HipChatGroup(db.Model):
__tablename__ = "hipchat_group"
id = db.Column(db.Integer, primary_key=True)
created_at = db.Column(db.DateTime, default=datetime.utcnow)
class HipChatUser(db.Model):
__tablename__ = "hipchat_user"
id = db.Column(db.Integer, primary_key=True)
created_at = db.Column(db.DateTime, default=datetime.utcnow)
group_id = db.Column(db.Integer, db.ForeignKey(HipChatGroup.id), nullable=False)
group = db.relationship(HipChatGroup, backref="users")
class User(db.Model):
__tablename__ = "user"
id = db.Column(db.Integer, primary_key=True)
created_at = db.Column(db.DateTime, default=datetime.utcnow)
hipchat_user_id = db.Column(db.Integer, db.ForeignKey(HipChatUser.id), nullable=False)
hipchat_user = db.relationship(HipChatUser, uselist=False) # one-to-one relationship
hipchat_group = db.relationship(
HipChatGroup,
secondary=HipChatUser,
uselist=False, # one-to-one relationship
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment