I have the following schemas in marshmallow that rely on models built with sqlalchemy. I am able to show an API response with multiple subscription prices that come from a many-to-many relationship off of the Journal model that is called 'subscription_prices'.
from marshmallow import fields
class SubscriptionPriceSchema(ma.Schema):
price = fields.Decimal(as_string=True)
class Meta:
model = SubscriptionPrice
fields = (
"price",
"year",
)
class JournalSchema(ma.Schema):
subscription_prices = fields.Nested(SubscriptionPriceSchema, many=True)
class Meta:
model = Journal
fields = (
"title",
"subscription_prices"
)
However, what I want to do is add a field called 'provenance' that is at the same level of the subscription prices. So I tried to do this and it is not working:
from marshmallow import fields
class SubscriptionPriceSchema(ma.Schema):
price = fields.Decimal(as_string=True)
class Meta:
model = SubscriptionPrice
fields = (
"price",
"year",
)
class SubscriptionSchema(ma.Schema):
provenance = fields.String(attribute="publisher.provenance")
subscription_prices = fields.Nested(SubscriptionPriceSchema, many=True)
class Meta:
fields = (
"provenance",
"subscription_prices",
)
class JournalSchema(ma.Schema):
subscription_prices = fields.Nested(SubscriptionSchema)
class Meta:
model = Journal
fields = (
"title",
"subscription_prices"
)
It seems like the relationship 'subscription_prices' is not passed in beyond one level, so it does not reach the new SubscriptionSchema. Any ideas on how I can make this work?