Универсальная мутация создания модели для графена

Я пытаюсь создать какую-то общую мутацию 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';```
Другие вопросы по тегам