Создать объект Pony ORM без выборки связанных объектов? - PullRequest
0 голосов
/ 17 октября 2019

Я недавно начал использовать 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, почему я должен извлекать весь объект, когдаМне нужен только идентификатор?

EDIT

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

1 Ответ

1 голос
/ 21 октября 2019

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

...