Создать объект Pony ORM без извлечения связанных объектов?

Недавно я начал использовать Pony ORM, и я думаю, что это здорово. Несмотря на то, что API хорошо задокументировано на официальном сайте, мне трудно работать с отношениями. В частности, я хочу вставить новый объект, который является частью набора. Однако я не могу найти способ создать объект без предварительного извлечения связанных объектов:

post = Post(
    #author = author_id, # Python complains about author's type, which is int and should be User
    author = User[author_id], # This works, but as I understand it actually fetches the user object
    #author = User(id=author_id), # This will try and (fail to) create a new record for the User table when I commit, am I right?
    # ...
)

В итоге в таблицу вставляется только значение id, зачем мне извлекать весь объект, если мне нужен только идентификатор?

РЕДАКТИРОВАТЬ

У меня был быстрый просмотр исходного кода Pony ORM, и использование первичного ключа обратной сущности должно работать, но даже в этом случае мы в конечном итоге вызываем _get_by_raw_pkval_, который извлекает объект либо из локального кеша, либо из базы данных, поэтому, вероятно, это не так. возможный.


person Sneppy    schedule 17.10.2019    source источник


Ответы (1)


Это часть внутреннего API, а также не то, как Pony предполагает, что вы его используете, но на самом деле вы можете использовать author = User._get_by_raw_pkval_((author_id,)), если уверены, что у вас есть эти объекты с этими идентификаторами.

person sashaaero    schedule 21.10.2019
comment
Но _get_by_raw_pkval((author_id,)) сразу извлекает объект из базы данных, не так ли? - person Sneppy; 21.10.2019
comment
@ Снеппи, нет. - person sashaaero; 22.10.2019