Я в той же лодке, что и вы.Возможно, немного поздно для вас, но для всех, кто сталкивался с тем же вопросом, это то, что я обнаружил, когда узнал о GraphQL и Graphene.
Я также был озадачен классом подкласса Meta
.Это то, что говорится в документации.
Графен использует внутренний класс Meta в ObjectType для установки различных параметров.
https://docs.graphene -python.org / ru / latest / types / objecttypes /# objecttype-configuration-meta-class
Мета-класс, по сути, позволяет изменять / модифицировать атрибуты класса.Например, вы можете изменить имя запроса к этому конкретному классу, установив name = <short name of class>
.
По умолчанию имя типа в схеме GraphQL будет таким же, как имя класса, которое определяетObjectType.Это можно изменить, установив свойство name в мета-классе:
Пример, который они используют, это ..
from graphene import ObjectType
class MyGraphQlSong(ObjectType):
class Meta:
name = 'Song'
Поэтому вместо необходимости запрашивать «MyGraphQlSong»Вы можете запросить его через «Песню».
Вы также можете добавить другие вещи, такие как Description, и интерфейсы, от которых должен наследоваться ваш родительский класс (все описано в ссылке выше).
Полный список атрибутов, которые вы можете изменить / изменить, приведен в справочнике API (это относится к ObjectType. Другие типы имеют другие параметры метакласса. Более подробно это объясняется здесь. https://docs.graphene -python.org / en / latest / api /
Meta class options (optional):
name (str): Name of the GraphQL type (must be unique in schema). Defaults to class
name.
description (str): Description of the GraphQL type in the schema. Defaults to class
docstring.
interfaces (Iterable[graphene.Interface]): GraphQL interfaces to extend with this object.
all fields from interface will be included in this object’s schema.
possible_types (Iterable[class]): Used to test parent value object via isintance to see if
this type can be used to resolve an ambigous type (interface, union).
default_resolver (any Callable resolver): Override the default resolver for this
type. Defaults to graphene default resolver which returns an attribute or dictionary key with the same name as the field.
fields (Dict[str, graphene.Field]): Dictionary of field name to Field. Not recommended to
use (prefer class attributes).
У меня возникли проблемы с поиском источника "model = ..." в примерах SQLAlchemy. Я не смог найти никакой документацииссылаясь на то, что означало «модель», но я предположил, что, поскольку SQLAlchemyObjectType
является подклассом ObjectType
, SQLAlchemyObjectType
добавил несколько своих собственных «опций», которые на самом деле не документированы (насколько я могу судить).Я пошел и прочитал исходный код и, конечно же, нашел эту ссылку на «модель = ...»
https://github.com/graphql-python/graphene-sqlalchemy/blob/master/graphene_sqlalchemy/types.py#L174
Класс SQLAlchemyObjectType
добавляет еще три параметра, модель,реестр и соединение. Если вы просматриваете код, то опция model
является вашим классом модели SQLAlchemy. Класс SQLAlchemyObjectType
использует параметр модели для проверки вашей модели и автоматического создания соответствующих полей.
Надеюсь, этосохраняет сВремя других людей от необходимости искать это.