KeyError при добавлении объектов в объект ассоциации SQLAlchemy

У меня есть две таблицы, таблетка и корреспондент :

class Correspondent(db.Model, GlyphMixin):
    # PK column and tablename etc. come from the mixin
    name = db.Column(db.String(100), nullable=False, unique=True)
    # association proxy
    tablets = association_proxy('correspondent_tablets', 'tablet')

    def __init__(self, name, tablets=None):
        self.name = name
        if tablets:
            self.tablets = tablets


class Tablet(db.Model, GlyphMixin):
    # PK column and tablename etc. come from the mixin
    area = db.Column(db.String(100), nullable=False, unique=True)
    # association proxy
    correspondents = association_proxy('tablet_correspondents', 'correspondent')

    def __init__(self, area, correspondents=None):
        self.area = area
        if correspondents:
            self.correspondents = correspondents


class Tablet_Correspondent(db.Model):

    __tablename__ = "tablet_correspondent"
    tablet_id = db.Column("tablet_id",
        db.Integer(), db.ForeignKey("tablet.id"), primary_key=True)
    correspondent_id = db.Column("correspondent_id",
        db.Integer(), db.ForeignKey("correspondent.id"), primary_key=True)
    # relations
    tablet = db.relationship(
        "Tablet",
        backref="tablet_correspondents",
        cascade="all, delete-orphan",
        single_parent=True)
    correspondent = db.relationship(
        "Correspondent",
        backref="correspondent_tablets",
        cascade="all, delete-orphan",
        single_parent=True)

    def __init__(self, tablet=None, correspondent=None):
        self.tablet = tablet
        self.correspondent = correspondent

я могу добавлять записи в табличку и корреспондент, и выполнение, например, Tablet.query.first().correspondentsпросто возвращает пустой список, как и следовало ожидать.Если я вручную вставлю строку в table_correspondentс использованием существующих идентификаторов планшета и корреспондента, список заполняется, как и следовало ожидать

Однако, если я попытаюсь сделать

cor = Correspondent.query.first()
tab = Tablet.query.first()
tab.correspondents.append(cor)

, я получу:

KeyError: 'tablet_correspondents'

Я почти уверен, что я Я упускаю здесь кое-что довольно элементарное

10
задан skovorodkin 4 February 2019 в 19:39
поделиться