Создание ошибок мутаций для отношения "многие ко многим" с помощью graphene-django

Я пытаюсь сделать что-то с graphene-django, но у меня есть некоторые проблемы с отношениями многие ко многим, я пытаюсь создать отношение между ролями и разрешениями, согласно документации и некоторым учебникам все "ОК" с кодом, но когда я открываю консоль graphql, чтобы сделать мутацию для промежуточной таблицы, возникает ошибка, так что это не совсем "ОК".

Вот как выглядит мой код

Модели:

class Roles(models.Model):
    name = models.CharField(max_length=50)
    description = models.CharField(max_length=500)

    def __str__(self):
        return self.name


class Permissions(models.Model):
    name = models.CharField(max_length=50)
    description = models.CharField(max_length=500)

    def __str__(self):
        return self.name


class RolePermissions(models.Model):
    role = models.ForeignKey(Roles, on_delete=models.DO_NOTHING)
    permission = models.ForeignKey(Permissions, on_delete=models.DO_NOTHING)

    def __str__(self):
        return True

Типы:

class RolesInput(graphene.InputObjectType):
    id = graphene.ID()
    name = graphene.String()
    description = graphene.String()


class PermissionsInput(graphene.InputObjectType):
    id = graphene.ID()
    name = graphene.String()
    description = graphene.String()

class Role_PermissionsInput(graphene.InputObjectType):
    id = graphene.ID()
    roleId = graphene.ID()
    permissionId = graphene.ID()


Мутация

class CreateRolePermission(graphene.Mutation):
    class Arguments:
        role_permission_data = Role_PermissionsInput(required=True)

    role_permission = graphene.Field(RolePermissionsType)

    @staticmethod
    def mutate(root, info, role_permission_data=None):
        role_permission_instance = RolePermissions(
            role =role_permission_data.roleId,
            permission=role_permission_data.permissionId,
        )
        role_permission_instance.save()
        return CreateRolePermission(role_permission=role_permission_instance)

У меня уже есть данные в БД для тестирования запросов и все хорошо, и я могу создать обе роли и разрешения по отдельности, но связь между ними имеет следующую ошибку:

{
  "errors": [
    {
      "message": "Cannot assign \"'1'\": \"RolePermissions.role\" must be a \"Roles\" instance.",
      "locations": [
        {
          "line": 2,
          "column": 3
        }
      ],
      "path": [
        "createRolePermision"
      ]
    }
  ],
  "data": {
    "createRolePermision": null
  }
}

Это точная мутация, которую я использую:

mutation{
  createRolePermision(rolePermissionData:{
    roleId:1,
    permissionId:1
  }){
    rolePermission{
      id
    }
  }
}

Также я могу создавать другие объекты с отношениями "многие к одному", например, пользователя с roleId, но это не то же самое для этих отношений "многие ко многим"

Вернуться на верх