gpt4 book ai didi

python - Flask-marshmallow - 如何有条件地生成 HATEOAS URL

转载 作者:行者123 更新时间:2023-12-01 17:31:42 24 4
gpt4 key购买 nike

我希望根据对象的当前状态有选择地返回一些 url,并且非常花时间解决如何在架构中公开状态属性、执行一些逻辑并确定根据哪些 URL 返回对象状态:

模型:

class Car(Model):
model = Column(String)
year = Column(String)
running = Column(Boolean) #'0 = not running', '1 = running'

和架构:

class CarSchema(ma.Schema):
class Meta:
fields = ('model', 'year', 'running', '_links')

_links = ma.Hyperlinks({
'self': ma.URLFor('car_detail', id='<id>'),
'start': ma.URLFor('car_start', id='<id>')
'stop': ma.URLFor('car_start', id='<id>')
})

我想做的是仅在“运行”属性为 0 时返回开始 url,并在其为 1 时返回停止 url,但我不清楚如何实现此目的。

Marshmallow 似乎有一些装饰器,但我如何利用 Flask-marshmallow 来利用它们?

最佳答案

您可以通过 post_dump 后处理来完成:检查运行状态并删除不适当的字段。这比有条件地生成它们要容易得多。

class CarSchema(ma.Schema):
class Meta:
fields = ('model', 'year', 'running', '_links')

_links = ma.Hyperlinks({
'self': ma.URLFor('car_detail', id='<id>'),
'start': ma.URLFor('car_start', id='<id>')
'stop': ma.URLFor('car_start', id='<id>')
})

@ma.post_dump
def postprocess(self, data):
if data['running']:
del data['_links']['start']
else:
del data['_links']['stop']

关于python - Flask-marshmallow - 如何有条件地生成 HATEOAS URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30631542/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com