Так что я читал об отношениях базы данных, и я, кажется, озадачен этимколб/SQLAlchemy Отношения
Ниже приведен код Мигеля Гринберг в своем blog
from app import db
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
nickname = db.Column(db.String(64), index=True, unique=True)
email = db.Column(db.String(120), index=True, unique=True)
posts = db.relationship('Post', backref='author', lazy='dynamic')
def __repr__(self):
return '<User %r>' % (self.nickname)
class Post(db.Model):
id = db.Column(db.Integer, primary_key = True)
body = db.Column(db.String(140))
timestamp = db.Column(db.DateTime)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
def __repr__(self):
return '<Post %r>' % (self.body)
поправьте меня, если я понимаю неправильно
posts = db.relationship('Post', backref='author', lazy='dynamic')
атрибут posts
будет иметь отношения к Post
модели, но то, что делает posts
атрибут стать? поле? что он может содержать? и что означает backref
означает? он определяется как author
, но нет author
атрибута ни в Models
.
Я просмотрел документы и так же, как и любой newb. Я все еще не совсем понимаю.
так TL: DR
что делает posts
стать?
какой backref
сделать?
, так что все это можно сделать 'user_id = db.Column (db.Integer, db.ForeignKey ('user .id ')) 'без' posts = db.relationships'? Как «User.posts» знает, какие «посты» принадлежат кому? – Zion
Вы можете, но вы теряете силу SQLAlchemy (вы на самом деле используете простой SQL). Вы создаете объект Post. Когда вы присоединяетесь к user.posts, SQLAlchemy обрабатывает вам индексы. рекомендуемое чтение http://docs.sqlalchemy.org/en/rel_1_0/orm/basic_relationships.html#one-to-many – Boaz