I haven't found much luck with the following.
I'd like to use URLFor to describe a URL for a relationship. I am rendering the child model Lease, which back_populates resources.
When I am deserializing the Lease object and links is generated, the parent Resource object is desereialized as well, but since it is a list, I am unsure how I can use that relationship to generate a URL to self, which requires looking at lease.relationships[0].discriminator. See LeaseSchema at bottom.
Resource Model
class Resource(base_mixin.BaseMixin, db.Base):
__tablename__ = 'resources'
id = sqlalchemy.Column(sqlalchemy.Integer, primary_key=True)
name = sqlalchemy.Column(sqlalchemy.String(32), unique=True)
labels = sqlalchemy.Column(sqlalchemy.dialects.postgresql.JSONB)
lease_id = sqlalchemy.Column(
sqlalchemy.Integer, sqlalchemy.ForeignKey('leases.id')
)
lease = sqlalchemy.orm.relationship('Lease', back_populates='resources')
discriminator = sqlalchemy.Column('type', sqlalchemy.String(50))
__mapper_args__ = {'polymorphic_on': discriminator}
Sapro Model
class Sapro(resource.Resource):
__mapper_args__ = {
'polymorphic_identity': 'sapro',
}
def __init__(self, *args, **kwargs):
super(Sapro, self).__init__(*args, **kwargs)
Lease Model
class Lease(base_mixin.BaseMixin, db.Base):
__tablename__ = 'leases'
id = sqlalchemy.Column(sqlalchemy.Integer, primary_key=True)
resources = sqlalchemy.orm.relationship(
'Resource', back_populates='lease', cascade='all,delete'
)
Lease Schema
class LeaseSchema(ma.Schema):
class Meta:
fields = (
'created_at',
'updated_at',
'id',
'resources',
'links',
)
resources = marshmallow.fields.Nested(sapro.SaproSchema)
links = ma.Hyperlinks(
{
# Unsure how to pass the discriminator from resources to URLFor.
#'self': ma.URLFor(
# 'lease_v1_bp.test_get_leases_by_discriminator',
# resources='<resources>',
#),
'collection': ma.URLFor('lease_v1_bp.get_leases'),
}
I haven't found much luck with the following.
I'd like to use URLFor to describe a URL for a relationship. I am rendering the child model
Lease, which back_populatesresources.When I am deserializing the
Leaseobject andlinksis generated, the parentResourceobject is desereialized as well, but since it is a list, I am unsure how I can use that relationship to generate a URL to self, which requires looking atlease.relationships[0].discriminator. SeeLeaseSchemaat bottom.Resource Model
Sapro Model
Lease Model
Lease Schema