Создание ошибок мутаций для отношения "многие ко многим" с помощью 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, но это не то же самое для этих отношений "многие ко многим"