An extension for graphene
Project description
Disclaimer
Проект находится на ранней стадии разработки
Как пользоваться?
Обязательные поля в инпутах
import graphene
from graphene_t2 import InputObjectType
class AddSomethingInput(InputObjectType):
field1 = graphene.String(required=True)
field2 = graphene.String(required=True)
class EditSomethingInput(AddSomethingInput):
class T2Meta:
required = {
False: '__all__', # или список полей
True: ['id'],
}
id = graphene.ID()
Примечания
- нет поддержки
graphene.Argument
- порядок ключей (
True
,False
) в параметреrequired
важен. Изменения применяются в порядке их объявления
Документирование изменений (changes.py
)
Автоматически изменяет описание полей. Может использоваться для генерации документации.
import graphene
from graphene_t2 import InputObjectType
from graphene_t2.features.changes import Alter, Deprecate
class SomeInputType(InputObjectType):
class T2Meta:
changes = [
Deprecate('legacy_field1', '03/20', replaced_by='new_field1'),
Deprecate('legacy_field2', '02/20', comment='Не используется'),
Alter('new_field1', '03/20', required=True),
]
legacy_field1 = graphene.String()
legacy_field2 = graphene.String()
new_field1 = graphene.String()
Сортировка (ordering.py
)
В классе-нследнике ObjectType
нужно объявить класс T2Meta
.
Внутри него можно создать две переменные:
can_order_by
- обязательный, список с названием полей, по которым можно производить сортировку;default_ordering
- необязательный, сортировка по-умолчанию, строка или список строк с названием полей.
Примеры:
class Model1Type(DjangoObjectType):
class T2Meta:
can_order_by = ['id']
class Model2Type(DjangoObjectType):
class T2Meta:
can_order_by = ['id']
default_ordering = 'id' # или '-id'
class Model3Type(DjangoObjectType):
class T2Meta:
can_order_by = ['id', 'name', 'date_created']
default_ordering = '-date_created', 'name' # или ['-date_created', 'name']
Класс с объявлением методов нужно отнаследовать от graphene_t2.QueriesType
, объявить вложенный класс T2Meta
.
Внутри объявить переменную enable_ordering_for
.
Возможны два вида значения:
__auto__
- включает возможность сортировки, для методов для которых это возможно сделать;- список с названием полей
Ресолверы в качестве аргумента должны принимать **kwargs
или sort_by
.
from graphene_t2 import QueriesType
class Query1(QueriesType):
class T2Meta:
enable_ordering_for = '__auto__'
items = graphene.List(Model1Type)
def resolve_items(self, info, **kwargs):
pass
class Query2(QueriesType):
class T2Meta:
enable_ordering_for = ['items']
items = graphene.List(Model1Type)
def resolve_items(self, info, sort_by):
pass
Примечания
- Нет поддержки случаев, когда название поля в модели отличается от названия в API;
- Нет возможности сортировать по полям вложенных структур;
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
graphene-t2-0.4.0.tar.gz
(6.9 kB
view hashes)
Built Distribution
Close
Hashes for graphene_t2-0.4.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 59a6ac9730c25f1c5afe03da675fb8ff7cd36ecee7a119166e7b3b87061e27b4 |
|
MD5 | b019a670385f808d50b0b4c726c8025c |
|
BLAKE2b-256 | c3264eb55084e839de450fc72d854e91cea59f081d568cb82ce5e920444b6216 |