У меня проблема с намоткой головы на мое веб-приложение Pyramid.У меня она очень похожа на ту, что описана Майклом Мерикелем здесь , за исключением того, что я использую чистый обход, чтобы найти свои взгляды.(Они объявлены настроенными с context = 'path.toResource' name = 'myView'), довольно стандартная плата за проезд в соответствии с тем, что я могу сказать из прохождения вики. Хотя мое приложение имеет более сложную структуру URL: Мои ресурсы пользователя находятся под /users/{user_id}
, а мои проекты под /projects/{project_id}
.Все мои ресурсы сохраняются с использованием SQLAlchemy ORM;У меня есть класс User и Project с атрибутами __name__
и __parent__
, а также другие атрибуты, расширяющие столбцы.
class User(Base):
id = Column(...)
__name__ = None
__parent__ = None
Class Project(Base):
id = Column(...)
__name__ = None
__parent__ = None
owner_id = Column(...ForeignKey(User.id))
owner = relationship(User,...)
У меня есть RootFactory, ProjectFactory и UserFactory, которые заполняют соответствующие атрибуты __name__
и __parent__
в их вызовах __get_item__
.
Итак, в функциях представления дляКонтекст проекта, я получаю экземпляр проекта в request.context.Моя проблема, как, черт возьми, я ссылаюсь на соответствующий экземпляр пользователя?Я не могу создать project.owner, потому что этот экземпляр User не проходил через цепочку RootFactory, поэтому его значения __parent__
и __name__
не установлены.Это плохо, потому что я хочу использовать request.resource_url, чтобы найти URL для владельца-пользователя, чтобы я мог разместить ссылку на странице просмотра.
Какое решение здесь ТАК?Я делаю все через request.root?Что если я хочу сделать сложный запрос, который возвращает экземпляры User или Project?Есть ли какой-нибудь CrapFactory, который я могу передать SQLAlchemy, чтобы все его экземпляры были правильно заполнены?
Является ли мой подход совершенно неправильным?
Я чувствую, что у меня не возникло бы таких проблем, если бы я просто застрял с маршрутизацией URL ...