Last active
August 29, 2015 14:04
-
-
Save cra/535f0567a953ba183368 to your computer and use it in GitHub Desktop.
Multiple foreignkeys for dummies
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| from app import db | |
| class Copter(db.Model): | |
| __tablename__ = "Copter" | |
| id = db.Column(db.Integer, primary_key=True) | |
| comment = db.Column(db.Unicode(100)) | |
| current_stay = db.Column(db.PickleType) | |
| class User(db.Model): | |
| __tablename__ = "User" | |
| id = db.Column(db.Integer, primary_key=True) | |
| name = db.Column(db.Unicode(100)) | |
| surname = db.Column(db.Unicode(100)) | |
| uid = db.Column(db.Integer) | |
| phone = db.Column(db.String(15)) | |
| class Path(db.Model): | |
| __tablename__ = "Path" | |
| id = db.Column(db.Integer, primary_key=True) | |
| init_cords = db.Column(db.PickleType) | |
| final_cords = db.Column(db.PickleType) | |
| sender_id = db.Column(db.Integer, db.ForeignKey('User.id')) | |
| sender = db.relationship("User", foreign_keys=[sender_id]) | |
| recipient_id = db.Column(db.Integer, db.ForeignKey('User.id')) | |
| recipient = db.relationship("User", foreign_keys=[recipient_id]) | |
| copter_id = db.Column(db.Integer, db.ForeignKey('Copter.id')) | |
| copter = db.relationship("Copter", foreign_keys=[copter_id]) | |
| active_state = db.Column(db.Integer) | |
| date_finished = db.Column(db.DateTime) | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| (v)[cra@momo]::[16:37:13 Jul29] /tmp/lsh-guys | |
| $ python manage.py shell | |
| >>> from app import db | |
| >>> db.drop_all() | |
| >>> db.create_all() | |
| >>> from app.models import User, Path, Copter | |
| >>> c = Copter() | |
| >>> c.comment = "YOBA" | |
| >>> c.current_stay = 1 | |
| >>> db.session.add(c) | |
| >>> db.session.commit() | |
| /tmp/lsh-guys/v/lib/python2.7/site-packages/sqlalchemy/engine/default.py:459: SAWarning: Unicode type received non-unicode bind param value. | |
| param.append(processors[key](compiled_params[key])) | |
| >>> c.id | |
| 1 | |
| >>> sender = User() | |
| >>> sender.surname = u"Shevl" | |
| >>> sender.name = u"Dan" | |
| >>> sender.uid = u"752107" | |
| >>> sender.phone = u"02" | |
| >>> sender.id | |
| >>> print sender.id | |
| None | |
| >>> db.session.add(sender) | |
| >>> db.session.commit() | |
| >>> print sender.id | |
| 1 | |
| >>> recipient = User() | |
| >>> recipient.name = u"Vasya" | |
| >>> recipient.surname = u"Pupk" | |
| >>> recipient.uid = u"Super-Uid" | |
| >>> recipient.phone = u"007" | |
| >>> print recipient.id | |
| None | |
| >>> db.session.add(recipient) | |
| >>> db.session.commit() | |
| >>> print recipient.id | |
| 2 | |
| >>> p = Path() | |
| >>> p.init_coords = 12 | |
| >>> p.final_coords = 14 | |
| >>> p.sender = sender | |
| >>> p.recipient = recipient | |
| >>> p.copter = copter | |
| Traceback (most recent call last): | |
| File "<console>", line 1, in <module> | |
| NameError: name 'copter' is not defined | |
| >>> p.copter = c | |
| >>> p.active_state = 42 | |
| >>> from datetime import datetime | |
| >>> p.date_finished = datetime.now() | |
| >>> db.session.add(p) | |
| >>> db.session.commit() | |
| >>> p.sender | |
| <app.models.User object at 0x7f856f782c10> | |
| >>> p.recipient | |
| <app.models.User object at 0x7f856f782b90> | |
| >>> p.recipient.name | |
| u'Vasya' | |
| >>> p.sender.name | |
| u'Dan' | |
| >>> p.copter.comment | |
| u'YOBA' | |
| >>> | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
