Проблемы при создании таблиц отношения один к одному - PullRequest
0 голосов
/ 25 октября 2010

Я получаю ошибки, когда пытаюсь создать таблицы один к одному.Экран содержит crm и crm содержит больше классов.Соотношение один к одному между crm, поэтому я хочу использовать идентификатор экрана в качестве первичного ключа в crm.И отношение один к одному между crm и некоторыми классами, я просто добавил один класс в качестве примера, поэтому дочерние элементы crm должны содержать идентификатор экрана в качестве первичного ключа.Когда я пытаюсь установить последнее отношение, это когда оно разрывается.Я пытался использовать оба, идентификатор crm и идентификатор экрана.

Я не работал.Я получаю ошибки, такие как «UnmappedClassError» при попытке использовать идентификатор crm в ContactInformation и «Не удается определить условие соединения между родительскими / дочерними таблицами в отношении CRM.contactInformation. Укажите выражение« primaryjoin ».отношение «ко-многим» также необходимо для «вторичного соединения», когда я пытаюсь использовать идентификатор экрана в ContactInformation.

Это мои классы:

   class Screen(rdb.Model):
        """Set up screens table in the database"""
        rdb.metadata(metadata)
        rdb.tablename("screens")

        id = Column("id", Integer, primary_key=True)
        title = Column("title", String(100))
        ....

        crm = relationship("CRM", uselist=False, backref="screens")

class CRM(rdb.Model):
    """Set up crm table in the database"""
    rdb.metadata(metadata)
    rdb.tablename("crms")

    id = Column("id", Integer, ForeignKey("screens.id"), primary_key=True)

    contactInformation = relationship("crm_contact_informations", uselist=False, backref="crms")
        ....

class CRMContactInformation(rdb.Model):
    """Set up crm contact information table in the database"""
    rdb.metadata(metadata)
    rdb.tablename("crm_contact_informations")

    **id = Column("id", Integer, ForeignKey("screens.id"), primary_key=True)**
    owner = Column("owner", String(50))
       ...

1 Ответ

0 голосов
/ 26 октября 2010

Во-первых, почему все 3 таблицы имеют отношения 1: 1? Таблица, соответствующая 2NF , должна работать значительно лучше.

Но если вам все еще нужны 3 таблицы, попробуйте связать crm_contact_informations с crms, а не с экранами:

id = Column("id", Integer, ForeignKey("crms.id"), primary_key=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...