Я пытаюсь создать систему разрешений ролей, по существу, со следующими моделями:
class Role:
role_id = db.Column(db.Integer, primary_key=True)
owner_id = db.Column(db.Integer, db.ForeignKey('user.user_id'))
role_name = db.Column(db.String, nullable=False)
members = db.relationship("RoleMemberModel", backref="role_member", lazy=True)
created_ts = db.Column(db.DateTime)
class RoleMembership:
role_id = db.Column(db.Integer, db.ForeignKey('role.role_id'), primary_key=True)
user_id = db.Column(db.Integer, db.ForeignKey('user.user_id'), primary_key=True)
is_owner = db.Column(db.Boolean, default=False)
В идеале я хотел бы иметь возможность POST что-то вроде этого, чтобы создать роль, которая будет создавать записи в обеих таблицах:
{
role_name: "Role Name",
members: [1, 2, 3]
}
Я пытаюсь добиться этого с помощью вложенных схем Marshmallow, но у меня возникают некоторые проблемы.
class RoleSchema(ma.ModelSchema):
class Meta:
include_fk = True
model = RoleModel
members = ma.List(ma.Pluck(RoleMemberSchema, "user_id"))
У кого-нибудь есть предложения?