Универсальная мутация создания модели для графена
Я пытаюсь создать какую-то общую мутацию create в графене для приложения фляги. Для создания мутации обычно используется следующий синтаксис:
class CreateMutation(graphene.Mutation):
class Arguments:
model_attribute1
model_attribute2
...
def mutate(root, info, model_attribute1, model_attribute2):
create model here
Я хотел бы создать какой-то общий класс мутации создания. Для этого мне нужно будет динамически создать класс Arguments, а затем передать их в функцию mutate. Я понял, что могу получить атрибуты, которые нам нужны для мутации из модели sqlalchemy, с помощьюSqlAlchemyModel.__table__.columns
, но мне сложно понять, как создать класс Arguments с учетом этих столбцов.
1 ответ
Решение
Попробуй это:
def create_class(args: dict[str, str]):
class Arguments: pass
for arg in args:
setattr(Arguments, arg, args[arg])
return Arguments
x = create_class({'thing': '100'}); assert x.thing == '100';```