Я использую базу данных Sqlite и флешку, зефир, sqlalchemy в качестве веб-API для внешнего интерфейса проекта.
Я использую UUID, хранящийся в виде большого двоичного объекта в базе данных, и пытаюсь стилизовать данные, когда они возвращаются в вызывающий код.
Я могу преобразовать Id, если он возвращен в модели, используя поле «Зефир», но с помощью гиперссылок Id все еще выводится в виде строки байтового массива:
class Item(Base):
__tablename__ = 'Items'
Id = Column(LargeBinary, primary_key=True)
def __repr__(self):
return '<Item {}>'.format(self.Name)
class ItemSchema(ma.Schema):
Id = fields.Function(lambda obj: str(UUID(bytes=obj.Id)))
_links = ma.Hyperlinks(
{"url": ma.URLFor("item_detail", id="<Id>"), "collection": ma.URLFor("items")}
)
class Meta:
fields = ("_links", "Id")
Есть ли способ отформатировать , который выводится в ссылках?
то есть
{"url": ma.URLFor("item_detail", id="<str(UUID(bytes=Id))>"), "collection": ma.URLFor("items")}
Вот как в данный момент выводится:
{"_links": {"url": "/api/items/b%27%5Cx86%5Cxacx__%5Cxf9%5Cxc2J%5Cx80a6%5Cxa7%5Cx95%5Cx10%5Cx91%5Cxff%27", "collection": "/api/items"}, "Id": "86ac785f-5ff9-c24a-8061-36a7951091ff"}
Я хочу, чтобы это выглядело так:
{"_links": {"url": "/api/items/86ac785f-5ff9-c24a-8061-36a7951091ff", "collection": "/api/items"}, "Id": "86ac785f-5ff9-c24a-8061-36a7951091ff"}
Я хочу, чтобы ссылка использовала формат UUID, а не байтовый массив.