Вложенные поля зефира (размещение вложенного объекта) - PullRequest
0 голосов
/ 05 февраля 2020

Я пытаюсь создать систему разрешений ролей, по существу, со следующими моделями:

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"))

У кого-нибудь есть предложения?

...