У меня есть две модели, User
и Signal
.Все Signal
имеют отношение один-к-одному с User
с.
Я бы хотел, чтобы пользовательские модели могли «следовать» за другими пользовательскими моделями, одну можно считать «сигнализатором»другой - «последователь», но оба они, по сути, пользователи.Это отношение многие ко многим, однако я хотел бы сохранить дополнительную информацию об этих отношениях в базе данных.Одна дополнительная таблица под названием «банк», в которой хранятся некоторые дополнительные данные о характере отношений.Давайте также скажем, возможно, поле «рейтинг» для пользователей, чтобы оценить друг друга.
Я пытался добавить это в реляционное поле, но Flask SQL Alchemy это не нравится.
follows = db.Table('follows',
db.Column('signaller_id', db.Integer, db.ForeignKey('user.id')),
db.Column('follower_id', db.Integer, db.ForeignKey('user.id')),
db.Column('bank', db.Column(db.String(50)))
db.Column('rating', db.Column(db.String(50)))
)
class User(UserMixin, db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(64), index=True, unique=True)
first_name = db.Column(db.String(64), index=True)
last_name = db.Column(db.String(64), index=True)
follows = db.relationship('User', secondary=follows, backref=db.backref('followers', lazy='dynamic')