Python PonyORM Отображение один в один - PullRequest
0 голосов
/ 10 февраля 2019

Я пытаюсь создать однозначное сопоставление с помощью Pony ORM.

class ApplierIngress(ApplierObjectMapper.db.Entity):
    correlation_id = orm.PrimaryKey(str)
    ticket_number  = orm.Required(str)
    username       = orm.Required(str)
    status         = orm.Required(str)
    request_date   = orm.Required(datetime)

class ApplierResult(ApplierObjectMapper.db.Entity):
    correlation_id = orm.Required(ApplierIngress)
    result         = orm.Required(orm.LongStr)
    request_date   = orm.Required(datetime)

Выдает ошибку при создании сопоставления

pony.orm.core.ERDiagramError: Reverse attribute for ApplierResult.correlation_id not found

Я хочу, чтобы correlation_id в таблице ApplierResult был внешним ключом, ссылающимся на correlation_id в таблице ApplierIngress

Пожалуйста, дайте мне знать, что я делаю не так?

1 Ответ

0 голосов
/ 02 марта 2019

Как говорится в сообщении об ошибке, вам необходимо указать обратный атрибут.Сущности это не просто таблицы.

class ApplierIngress(ApplierObjectMapper.db.Entity):
    correlation_id = orm.PrimaryKey(str)
    ticket_number  = orm.Required(str)
    username       = orm.Required(str)
    status         = orm.Required(str)
    request_date   = orm.Required(datetime)
    result_id      = orm.Optional('ApplierResult') # this attribute should be added       

class ApplierResult(ApplierObjectMapper.db.Entity):
    correlation_id = orm.Required(ApplierIngress)
    result         = orm.Required(orm.LongStr)
    request_date   = orm.Required(datetime)

Поскольку этот класс еще не объявлен, вы должны использовать его в качестве строки или лямбды

result_id = orm.Optional('ApplierResult')

result_id = orm.Optional(lambda: ApplierResult)

См. здесь

...