这个库向graphene django添加了一些额外的功能,以方便graphql在没有中继的情况下使用,允许分页和过滤集成,并添加了一些额外的指令

graphene-django-extras的Python项目详细描述



石墨烯django附加材料

建立徽章codecovpypi versionpython支持licensecode style:black

这个包为graphene django添加了一些额外的功能,以方便在没有中继的情况下使用graphql:

  1. 允许对查询进行分页和筛选。
  2. 允许基于突变定义djangorestframework序列化程序。
  3. 允许对查询和片段使用指令。

注意:订阅支持已移至graphene-django订阅

安装

要安装graphene django extras,只需在shell中运行此命令:

pip install graphene-django-extras

文档:

额外功能:

字段:

  1. djangoobjectfield
  2. djangoFilterListfield
  3. djangoFilterPaginateListField
  4. djangolistobjectfield(建议用于查询定义

突变:

  1. djangoSerializerMutation(建议用于突变定义

类型:

  1. djangolistobjecttype(建议用于类型定义
  2. djangoinputobjecttype
  3. djangoSerializerType(建议用于快速查询和突变定义)

分页:

  1. limitoffsetgraphqlpagination
  2. 分页

查询和突变示例:

这是石墨烯django extras包使用的基本示例。您可以配置全局参数 对于在settings.py上的djangolistobjecttype类分页定义,如下所示:

GRAPHENE_DJANGO_EXTRAS={'DEFAULT_PAGINATION_CLASS':'graphene_django_extras.paginations.LimitOffsetGraphqlPagination','DEFAULT_PAGE_SIZE':20,'MAX_PAGE_SIZE':50,'CACHE_ACTIVE':True,'CACHE_TIMEOUT':300# seconds}

1-类型定义:

fromdjango.contrib.auth.modelsimportUserfromgraphene_django_extrasimportDjangoListObjectType,DjangoSerializerType,DjangoObjectTypefromgraphene_django_extras.paginationsimportLimitOffsetGraphqlPaginationfrom.serializersimportUserSerializerclassUserType(DjangoObjectType):classMeta:model=Userdescription=" Type definition for a single user "filter_fields={"id":("exact",),"first_name":("icontains","iexact"),"last_name":("icontains","iexact"),"username":("icontains","iexact"),"email":("icontains","iexact"),"is_staff":("exact",),}classUserListType(DjangoListObjectType):classMeta:description=" Type definition for user list "model=Userpagination=LimitOffsetGraphqlPagination(default_limit=25,ordering="-username")# ordering can be: string, tuple or listclassUserModelType(DjangoSerializerType):""" With this type definition it't necessary a mutation definition for user's model """classMeta:description=" User model type definition "serializer_class=UserSerializerpagination=LimitOffsetGraphqlPagination(default_limit=25,ordering="-username")# ordering can be: string, tuple or listfilter_fields={"id":("exact",),"first_name":("icontains","iexact"),"last_name":("icontains","iexact"),"username":("icontains","iexact"),"email":("icontains","iexact"),"is_staff":("exact",),}

2-您可以定义用于突变的输入类型:

fromgraphene_django_extrasimportDjangoInputObjectTypeclassUserInput(DjangoInputObjectType):classMeta:description=" User InputType definition to use as input on an Arguments class on traditional Mutations "model=User

3-您可以定义使用输入型或基于drf序列化器的突变的传统突变:

importgraphenefromgraphene_django_extrasimportDjangoSerializerMutationfrom.serializersimportUserSerializerfrom.typesimportUserTypefrom.input_typesimportUserInputTypeclassUserSerializerMutation(DjangoSerializerMutation):"""        DjangoSerializerMutation auto implement Create, Delete and Update functions    """classMeta:description=" DRF serializer based Mutation for Users "serializer_class=UserSerializerclassUserMutation(graphene.Mutation):"""         On traditional mutation classes definition you must implement the mutate function    """user=graphene.Field(UserType,required=False)classArguments:new_user=graphene.Argument(UserInput)classMeta:description=" Graphene traditional mutation for Users "@classmethoddefmutate(cls,root,info,*args,**kwargs):...

4-定义方案文件:

importgraphenefromgraphene_django_extrasimportDjangoObjectField,DjangoListObjectField,DjangoFilterPaginateListField,DjangoFilterListField,LimitOffsetGraphqlPaginationfrom.typesimportUserType,UserListType,UserModelTypefrom.mutationsimportUserMutation,UserSerializerMutationclassQueries(graphene.ObjectType):# Possible User list queries definitionsusers=DjangoListObjectField(UserListType,description='All Users query')users1=DjangoFilterPaginateListField(UserType,pagination=LimitOffsetGraphqlPagination())users2=DjangoFilterListField(UserType)users3=DjangoListObjectField(UserListType,filterset_class=UserFilter,description='All Users query')# Defining a query for a single user# The DjangoObjectField have a ID type input field, that allow filter by id and is't necessary to define resolve functionuser=DjangoObjectField(UserType,description='Single User query')# Another way to define a query to single useruser1=UserListType.RetrieveField(description='User List with pagination and filtering')# Exist two ways to define single or list user queries with DjangoSerializerTypeuser_retrieve1,user_list1=UserModelType.QueryFields(description='Some description message for both queries',deprecation_reason='Some deprecation message for both queries')user_retrieve2=UserModelType.RetrieveField(description='Some description message for retrieve query',deprecation_reason='Some deprecation message for retrieve query')user_list2=UserModelType.ListField(description='Some description message for list query',deprecation_reason='Some deprecation message for list query')classMutations(graphene.ObjectType):user_create=UserSerializerMutation.CreateField(deprecation_reason='Some one deprecation message')user_delete=UserSerializerMutation.DeleteField()user_update=UserSerializerMutation.UpdateField()# Exist two ways to define mutations with DjangoSerializerTypeuser_create1,user_delete1,user_update1=UserModelType.MutationFields(description='Some description message for create, delete and update mutations',deprecation_reason='Some deprecation message for create, delete and update mutations')user_create2=UserModelType.CreateField(description='Description message for create')user_delete2=UserModelType.DeleteField(description='Description message for delete')user_update2=UserModelType.UpdateField(description='Description message for update')traditional_user_mutation=UserMutation.Field()

5-指令设置:

对于use指令,您必须遵循两个简单步骤:

    你必须将"graphene-django-extras.extraphqldirectivemiddleware"添加到graphene dict 设置上的配置。py:
# settings.pyGRAPHENE={'SCHEMA_INDENT':4,'MIDDLEWARE':['graphene_django_extras.ExtraGraphQLDirectiveMiddleware']}
  1. 必须将带有自定义指令的指令参数添加到架构定义中。本模块附带 这些指令允许您格式化字符串、数字、列表和日期(可选),以及 您可以这样加载:
# schema.pyfromgraphene_django_extrasimportall_directivesschema=graphene.Schema(query=RootQuery,mutation=RootMutation,directives=all_directives)

注意:日期指令取决于dateutil模块,因此如果您没有安装它,则此指令将不会 可用。您可以手动安装DateUtil模块:

pip install python-dateutil

或者像这样:

pip install graphene-django-extras
0

就这些!!!!

6-完整指令列表:

对于号码:
  1. floorGraphQlDirective:floors值。同时支持字符串和浮点字段。
  2. ceilgraphql指令:ceils值。同时支持字符串和浮点字段。
列表:
  1. shuffleGraphqlDirective:将列表随机移动到位。
  2. samplegraphql指令:获取一个"k"int参数,并返回从 录取名单
表示日期:
  1. dategraphql指令:采用可选的"format"字符串参数,并通过 "format"格式的DateUtil模块。默认格式为:"dd-mmm-yyyy-hh:mm:ss",相当于 %d%b%y%h:%m:%s'python格式。
用于字符串:
  1. defaultgraphql指令:采用"to"字符串参数。如果没有或"
  2. base64graphql指令:采用可选的("encode"或"decode")"op"字符串参数(默认为"encode")。 对获取的字符串进行编码或解码。
  3. numbergraphql指令:采用"as"字符串参数。字符串格式类似于指定的python数字格式。
  4. currencygraphql指令:采用可选的"symbol"字符串参数(默认值="$")。 将符号参数前置到Taked字符串,并将其格式化为货币。
  5. 小写的graphql指令:将接受的字符串小写。
  6. uppercasegraphql指令:采用大写的字符串。
  7. capitalizegraphql指令:返回第一个字符大写,其余字符降低的字符串。
  8. camelcasegraphql指令:camelcase获取的字符串。
  9. snakecasegraphql指令:snakecase获取的字符串。
  10. kebabcasegraphql指令:snakecase获取字符串。
  11. swapcasegraphql指令:返回采用的字符串,其中大写字符转换为小写和vice 反之亦然.
  12. strippgraphql指令:采用可选的"chars"字符串参数(默认值=")。 返回去掉前导和尾随字符的Taked字符串。"chars"参数不是前缀或 后缀;相反,其值的所有组合都被剥离。
  13. titlecasegraphql指令:返回以大写字符开头的字符串title cased 其余字符均为小写。
  14. centerpraphql指令:采用"width"字符串参数和可选的"fillchar"字符串参数(默认值=")。 返回以"width"参数为中心的字符串作为新长度。填充是使用指定的 "fillchar"参数。如果"width"参数小于或等于Taked字符串,则返回原始字符串 长度:
  15. replaceGraphQL指令:接受两个字符串参数"old"和"new",以及一个可选的整数参数 "伯爵"。 返回执行的字符串,所有出现的子字符串"old"参数都替换为"new"参数值。 如果给出了可选参数"count",则只有第一个"count"出现是rep花边,

7-查询示例:

pip install graphene-django-extras
1

8-突变的例子:

pip install graphene-django-extras
2

9-指令示例:

假设我们有这个查询:

pip install graphene-django-extras
3

并返回此数据:

pip install graphene-django-extras
4

正如我们所看到的,有些数据丢失了,或者没有我们喜欢的格式,所以让我们来格式化输出数据 我们想要的:

pip install graphene-django-extras
5

我们得到输出数据:

pip install graphene-django-extras
6

如我们所见,指令是格式化查询输出数据的一种简单方法,它可以像一个链一样组合在一起。

可能日期的标记列表: "yy yy","yy","w w","w","d d","d ddd","d","ddd","dddd","mm","mmm","mmmm","hh","hh","mm","ss","a","z z","z"。

您也可以使用此快捷方式:

  1. "以前"
  2. "iso":"yyyy-mmm-ddthh:mm:ss"
  3. "js"或"javascript":"ddd mmm dd yyyy hh:mm:ss"

更改日志:

v0.4.6:

pip install graphene-django-extras
7

v0.4.5:

pip install graphene-django-extras
8

v0.3.7:

pip install graphene-django-extras
9

v0.3.6:

GRAPHENE_DJANGO_EXTRAS={'DEFAULT_PAGINATION_CLASS':'graphene_django_extras.paginations.LimitOffsetGraphqlPagination','DEFAULT_PAGE_SIZE':20,'MAX_PAGE_SIZE':50,'CACHE_ACTIVE':True,'CACHE_TIMEOUT':300# seconds}
0

v0.3.5:

GRAPHENE_DJANGO_EXTRAS={'DEFAULT_PAGINATION_CLASS':'graphene_django_extras.paginations.LimitOffsetGraphqlPagination','DEFAULT_PAGE_SIZE':20,'MAX_PAGE_SIZE':50,'CACHE_ACTIVE':True,'CACHE_TIMEOUT':300# seconds}
1

v0.3.4-字母2:

GRAPHENE_DJANGO_EXTRAS={'DEFAULT_PAGINATION_CLASS':'graphene_django_extras.paginations.LimitOffsetGraphqlPagination','DEFAULT_PAGE_SIZE':20,'MAX_PAGE_SIZE':50,'CACHE_ACTIVE':True,'CACHE_TIMEOUT':300# seconds}
2

v0.3.4-字母1:

GRAPHENE_DJANGO_EXTRAS={'DEFAULT_PAGINATION_CLASS':'graphene_django_extras.paginations.LimitOffsetGraphqlPagination','DEFAULT_PAGE_SIZE':20,'MAX_PAGE_SIZE':50,'CACHE_ACTIVE':True,'CACHE_TIMEOUT':300# seconds}
3

v0.3.3:

GRAPHENE_DJANGO_EXTRAS={'DEFAULT_PAGINATION_CLASS':'graphene_django_extras.paginations.LimitOffsetGraphqlPagination','DEFAULT_PAGE_SIZE':20,'MAX_PAGE_SIZE':50,'CACHE_ACTIVE':True,'CACHE_TIMEOUT':300# seconds}
4

v0.3.3-字母1:

GRAPHENE_DJANGO_EXTRAS={'DEFAULT_PAGINATION_CLASS':'graphene_django_extras.paginations.LimitOffsetGraphqlPagination','DEFAULT_PAGE_SIZE':20,'MAX_PAGE_SIZE':50,'CACHE_ACTIVE':True,'CACHE_TIMEOUT':300# seconds}
5

v0.3.2:

GRAPHENE_DJANGO_EXTRAS={'DEFAULT_PAGINATION_CLASS':'graphene_django_extras.paginations.LimitOffsetGraphqlPagination','DEFAULT_PAGE_SIZE':20,'MAX_PAGE_SIZE':50,'CACHE_ACTIVE':True,'CACHE_TIMEOUT':300# seconds}
6

v0.3.1:

GRAPHENE_DJANGO_EXTRAS={'DEFAULT_PAGINATION_CLASS':'graphene_django_extras.paginations.LimitOffsetGraphqlPagination','DEFAULT_PAGE_SIZE':20,'MAX_PAGE_SIZE':50,'CACHE_ACTIVE':True,'CACHE_TIMEOUT':300# seconds}
7

v0.3.0:

GRAPHENE_DJANGO_EXTRAS={'DEFAULT_PAGINATION_CLASS':'graphene_django_extras.paginations.LimitOffsetGraphqlPagination','DEFAULT_PAGE_SIZE':20,'MAX_PAGE_SIZE':50,'CACHE_ACTIVE':True,'CACHE_TIMEOUT':300# seconds}
8

v0.2.2:

GRAPHENE_DJANGO_EXTRAS={'DEFAULT_PAGINATION_CLASS':'graphene_django_extras.paginations.LimitOffsetGraphqlPagination','DEFAULT_PAGE_SIZE':20,'MAX_PAGE_SIZE':50,'CACHE_ACTIVE':True,'CACHE_TIMEOUT':300# seconds}
9

v0.2.1:

fromdjango.contrib.auth.modelsimportUserfromgraphene_django_extrasimportDjangoListObjectType,DjangoSerializerType,DjangoObjectTypefromgraphene_django_extras.paginationsimportLimitOffsetGraphqlPaginationfrom.serializersimportUserSerializerclassUserType(DjangoObjectType):classMeta:model=Userdescription=" Type definition for a single user "filter_fields={"id":("exact",),"first_name":("icontains","iexact"),"last_name":("icontains","iexact"),"username":("icontains","iexact"),"email":("icontains","iexact"),"is_staff":("exact",),}classUserListType(DjangoListObjectType):classMeta:description=" Type definition for user list "model=Userpagination=LimitOffsetGraphqlPagination(default_limit=25,ordering="-username")# ordering can be: string, tuple or listclassUserModelType(DjangoSerializerType):""" With this type definition it't necessary a mutation definition for user's model """classMeta:description=" User model type definition "serializer_class=UserSerializerpagination=LimitOffsetGraphqlPagination(default_limit=25,ordering="-username")# ordering can be: string, tuple or listfilter_fields={"id":("exact",),"first_name":("icontains","iexact"),"last_name":("icontains","iexact"),"username":("icontains","iexact"),"email":("icontains","iexact"),"is_staff":("exact",),}
0

v0.2.0:

fromdjango.contrib.auth.modelsimportUserfromgraphene_django_extrasimportDjangoListObjectType,DjangoSerializerType,DjangoObjectTypefromgraphene_django_extras.paginationsimportLimitOffsetGraphqlPaginationfrom.serializersimportUserSerializerclassUserType(DjangoObjectType):classMeta:model=Userdescription=" Type definition for a single user "filter_fields={"id":("exact",),"first_name":("icontains","iexact"),"last_name":("icontains","iexact"),"username":("icontains","iexact"),"email":("icontains","iexact"),"is_staff":("exact",),}classUserListType(DjangoListObjectType):classMeta:description=" Type definition for user list "model=Userpagination=LimitOffsetGraphqlPagination(default_limit=25,ordering="-username")# ordering can be: string, tuple or listclassUserModelType(DjangoSerializerType):""" With this type definition it't necessary a mutation definition for user's model """classMeta:description=" User model type definition "serializer_class=UserSerializerpagination=LimitOffsetGraphqlPagination(default_limit=25,ordering="-username")# ordering can be: string, tuple or listfilter_fields={"id":("exact",),"first_name":("icontains","iexact"),"last_name":("icontains","iexact"),"username":("icontains","iexact"),"email":("icontains","iexact"),"is_staff":("exact",),}
1

v0.1.6:

fromdjango.contrib.auth.modelsimportUserfromgraphene_django_extrasimportDjangoListObjectType,DjangoSerializerType,DjangoObjectTypefromgraphene_django_extras.paginationsimportLimitOffsetGraphqlPaginationfrom.serializersimportUserSerializerclassUserType(DjangoObjectType):classMeta:model=Userdescription=" Type definition for a single user "filter_fields={"id":("exact",),"first_name":("icontains","iexact"),"last_name":("icontains","iexact"),"username":("icontains","iexact"),"email":("icontains","iexact"),"is_staff":("exact",),}classUserListType(DjangoListObjectType):classMeta:description=" Type definition for user list "model=Userpagination=LimitOffsetGraphqlPagination(default_limit=25,ordering="-username")# ordering can be: string, tuple or listclassUserModelType(DjangoSerializerType):""" With this type definition it't necessary a mutation definition for user's model """classMeta:description=" User model type definition "serializer_class=UserSerializerpagination=LimitOffsetGraphqlPagination(default_limit=25,ordering="-username")# ordering can be: string, tuple or listfilter_fields={"id":("exact",),"first_name":("icontains","iexact"),"last_name":("icontains","iexact"),"username":("icontains","iexact"),"email":("icontains","iexact"),"is_staff":("exact",),}
2

v0.1.3:

fromdjango.contrib.auth.modelsimportUserfromgraphene_django_extrasimportDjangoListObjectType,DjangoSerializerType,DjangoObjectTypefromgraphene_django_extras.paginationsimportLimitOffsetGraphqlPaginationfrom.serializersimportUserSerializerclassUserType(DjangoObjectType):classMeta:model=Userdescription=" Type definition for a single user "filter_fields={"id":("exact",),"first_name":("icontains","iexact"),"last_name":("icontains","iexact"),"username":("icontains","iexact"),"email":("icontains","iexact"),"is_staff":("exact",),}classUserListType(DjangoListObjectType):classMeta:description=" Type definition for user list "model=Userpagination=LimitOffsetGraphqlPagination(default_limit=25,ordering="-username")# ordering can be: string, tuple or listclassUserModelType(DjangoSerializerType):""" With this type definition it't necessary a mutation definition for user's model """classMeta:description=" User model type definition "serializer_class=UserSerializerpagination=LimitOffsetGraphqlPagination(default_limit=25,ordering="-username")# ordering can be: string, tuple or listfilter_fields={"id":("exact",),"first_name":("icontains","iexact"),"last_name":("icontains","iexact"),"username":("icontains","iexact"),"email":("icontains","iexact"),"is_staff":("exact",),}
3

v0.1.2:

fromdjango.contrib.auth.modelsimportUserfromgraphene_django_extrasimportDjangoListObjectType,DjangoSerializerType,DjangoObjectTypefromgraphene_django_extras.paginationsimportLimitOffsetGraphqlPaginationfrom.serializersimportUserSerializerclassUserType(DjangoObjectType):classMeta:model=Userdescription=" Type definition for a single user "filter_fields={"id":("exact",),"first_name":("icontains","iexact"),"last_name":("icontains","iexact"),"username":("icontains","iexact"),"email":("icontains","iexact"),"is_staff":("exact",),}classUserListType(DjangoListObjectType):classMeta:description=" Type definition for user list "model=Userpagination=LimitOffsetGraphqlPagination(default_limit=25,ordering="-username")# ordering can be: string, tuple or listclassUserModelType(DjangoSerializerType):""" With this type definition it't necessary a mutation definition for user's model """classMeta:description=" User model type definition "serializer_class=UserSerializerpagination=LimitOffsetGraphqlPagination(default_limit=25,ordering="-username")# ordering can be: string, tuple or listfilter_fields={"id":("exact",),"first_name":("icontains","iexact"),"last_name":("icontains","iexact"),"username":("icontains","iexact"),"email":("icontains","iexact"),"is_staff":("exact",),}
4

v0.1.1:

fromdjango.contrib.auth.modelsimportUserfromgraphene_django_extrasimportDjangoListObjectType,DjangoSerializerType,DjangoObjectTypefromgraphene_django_extras.paginationsimportLimitOffsetGraphqlPaginationfrom.serializersimportUserSerializerclassUserType(DjangoObjectType):classMeta:model=Userdescription=" Type definition for a single user "filter_fields={"id":("exact",),"first_name":("icontains","iexact"),"last_name":("icontains","iexact"),"username":("icontains","iexact"),"email":("icontains","iexact"),"is_staff":("exact",),}classUserListType(DjangoListObjectType):classMeta:description=" Type definition for user list "model=Userpagination=LimitOffsetGraphqlPagination(default_limit=25,ordering="-username")# ordering can be: string, tuple or listclassUserModelType(DjangoSerializerType):""" With this type definition it't necessary a mutation definition for user's model """classMeta:description=" User model type definition "serializer_class=UserSerializerpagination=LimitOffsetGraphqlPagination(default_limit=25,ordering="-username")# ordering can be: string, tuple or listfilter_fields={"id":("exact",),"first_name":("icontains","iexact"),"last_name":("icontains","iexact"),"username":("icontains","iexact"),"email":("icontains","iexact"),"is_staff":("exact",),}
5

v0.1.0:

fromdjango.contrib.auth.modelsimportUserfromgraphene_django_extrasimportDjangoListObjectType,DjangoSerializerType,DjangoObjectTypefromgraphene_django_extras.paginationsimportLimitOffsetGraphqlPaginationfrom.serializersimportUserSerializerclassUserType(DjangoObjectType):classMeta:model=Userdescription=" Type definition for a single user "filter_fields={"id":("exact",),"first_name":("icontains","iexact"),"last_name":("icontains","iexact"),"username":("icontains","iexact"),"email":("icontains","iexact"),"is_staff":("exact",),}classUserListType(DjangoListObjectType):classMeta:description=" Type definition for user list "model=Userpagination=LimitOffsetGraphqlPagination(default_limit=25,ordering="-username")# ordering can be: string, tuple or listclassUserModelType(DjangoSerializerType):""" With this type definition it't necessary a mutation definition for user's model """classMeta:description=" User model type definition "serializer_class=UserSerializerpagination=LimitOffsetGraphqlPagination(default_limit=25,ordering="-username")# ordering can be: string, tuple or listfilter_fields={"id":("exact",),"first_name":("icontains","iexact"),"last_name":("icontains","iexact"),"username":("icontains","iexact"),"email":("icontains","iexact"),"is_staff":("exact",),}
6

v0.1.0-字母12:

fromdjango.contrib.auth.modelsimportUserfromgraphene_django_extrasimportDjangoListObjectType,DjangoSerializerType,DjangoObjectTypefromgraphene_django_extras.paginationsimportLimitOffsetGraphqlPaginationfrom.serializersimportUserSerializerclassUserType(DjangoObjectType):classMeta:model=Userdescription=" Type definition for a single user "filter_fields={"id":("exact",),"first_name":("icontains","iexact"),"last_name":("icontains","iexact"),"username":("icontains","iexact"),"email":("icontains","iexact"),"is_staff":("exact",),}classUserListType(DjangoListObjectType):classMeta:description=" Type definition for user list "model=Userpagination=LimitOffsetGraphqlPagination(default_limit=25,ordering="-username")# ordering can be: string, tuple or listclassUserModelType(DjangoSerializerType):""" With this type definition it't necessary a mutation definition for user's model """classMeta:description=" User model type definition "serializer_class=UserSerializerpagination=LimitOffsetGraphqlPagination(default_limit=25,ordering="-username")# ordering can be: string, tuple or listfilter_fields={"id":("exact",),"first_name":("icontains","iexact"),"last_name":("icontains","iexact"),"username":("icontains","iexact"),"email":("icontains","iexact"),"is_staff":("exact",),}
7

v0.1.0-字母11:

fromdjango.contrib.auth.modelsimportUserfromgraphene_django_extrasimportDjangoListObjectType,DjangoSerializerType,DjangoObjectTypefromgraphene_django_extras.paginationsimportLimitOffsetGraphqlPaginationfrom.serializersimportUserSerializerclassUserType(DjangoObjectType):classMeta:model=Userdescription=" Type definition for a single user "filter_fields={"id":("exact",),"first_name":("icontains","iexact"),"last_name":("icontains","iexact"),"username":("icontains","iexact"),"email":("icontains","iexact"),"is_staff":("exact",),}classUserListType(DjangoListObjectType):classMeta:description=" Type definition for user list "model=Userpagination=LimitOffsetGraphqlPagination(default_limit=25,ordering="-username")# ordering can be: string, tuple or listclassUserModelType(DjangoSerializerType):""" With this type definition it't necessary a mutation definition for user's model """classMeta:description=" User model type definition "serializer_class=UserSerializerpagination=LimitOffsetGraphqlPagination(default_limit=25,ordering="-username")# ordering can be: string, tuple or listfilter_fields={"id":("exact",),"first_name":("icontains","iexact"),"last_name":("icontains","iexact"),"username":("icontains","iexact"),"email":("icontains","iexact"),"is_staff":("exact",),}
8

v0.1.0-字母10:

fromdjango.contrib.auth.modelsimportUserfromgraphene_django_extrasimportDjangoListObjectType,DjangoSerializerType,DjangoObjectTypefromgraphene_django_extras.paginationsimportLimitOffsetGraphqlPaginationfrom.serializersimportUserSerializerclassUserType(DjangoObjectType):classMeta:model=Userdescription=" Type definition for a single user "filter_fields={"id":("exact",),"first_name":("icontains","iexact"),"last_name":("icontains","iexact"),"username":("icontains","iexact"),"email":("icontains","iexact"),"is_staff":("exact",),}classUserListType(DjangoListObjectType):classMeta:description=" Type definition for user list "model=Userpagination=LimitOffsetGraphqlPagination(default_limit=25,ordering="-username")# ordering can be: string, tuple or listclassUserModelType(DjangoSerializerType):""" With this type definition it't necessary a mutation definition for user's model """classMeta:description=" User model type definition "serializer_class=UserSerializerpagination=LimitOffsetGraphqlPagination(default_limit=25,ordering="-username")# ordering can be: string, tuple or listfilter_fields={"id":("exact",),"first_name":("icontains","iexact"),"last_name":("icontains","iexact"),"username":("icontains","iexact"),"email":("icontains","iexact"),"is_staff":("exact",),}
9

v0.1.0-字母9:

fromgraphene_django_extrasimportDjangoInputObjectTypeclassUserInput(DjangoInputObjectType):classMeta:description=" User InputType definition to use as input on an Arguments class on traditional Mutations "model=User
0

v0.1.0-字母6:

fromgraphene_django_extrasimportDjangoInputObjectTypeclassUserInput(DjangoInputObjectType):classMeta:description=" User InputType definition to use as input on an Arguments class on traditional Mutations "model=User
1

v0.1.0-字母5:

fromgraphene_django_extrasimportDjangoInputObjectTypeclassUserInput(DjangoInputObjectType):classMeta:description=" User InputType definition to use as input on an Arguments class on traditional Mutations "model=User
2

v0.1.0-字母4:

fromgraphene_django_extrasimportDjangoInputObjectTypeclassUserInput(DjangoInputObjectType):classMeta:description=" User InputType definition to use as input on an Arguments class on traditional Mutations "model=User
3

v0.1.0-字母3:

fromgraphene_django_extrasimportDjangoInputObjectTypeclassUserInput(DjangoInputObjectType):classMeta:description=" User InputType definition to use as input on an Arguments class on traditional Mutations "model=User
4

v0.1.0-字母2:

fromgraphene_django_extrasimportDjangoInputObjectTypeclassUserInput(DjangoInputObjectType):classMeta:description=" User InputType definition to use as input on an Arguments class on traditional Mutations "model=User
5

v0.1.0-字母1:

fromgraphene_django_extrasimportDjangoInputObjectTypeclassUserInput(DjangoInputObjectType):classMeta:description=" User InputType definition to use as input on an Arguments class on traditional Mutations "model=User
6

v0.0.4:

fromgraphene_django_extrasimportDjangoInputObjectTypeclassUserInput(DjangoInputObjectType):classMeta:description=" User InputType definition to use as input on an Arguments class on traditional Mutations "model=User
7

v0.0.3:

fromgraphene_django_extrasimportDjangoInputObjectTypeclassUserInput(DjangoInputObjectType):classMeta:description=" User InputType definition to use as input on an Arguments class on traditional Mutations "model=User
8

v0.0.2:

fromgraphene_django_extrasimportDjangoInputObjectTypeclassUserInput(DjangoInputObjectType):classMeta:description=" User InputType definition to use as input on an Arguments class on traditional Mutations "model=User
9

v0.0.1:

importgraphenefromgraphene_django_extrasimportDjangoSerializerMutationfrom.serializersimportUserSerializerfrom.typesimportUserTypefrom.input_typesimportUserInputTypeclassUserSerializerMutation(DjangoSerializerMutation):"""        DjangoSerializerMutation auto implement Create, Delete and Update functions    """classMeta:description=" DRF serializer based Mutation for Users "serializer_class=UserSerializerclassUserMutation(graphene.Mutation):"""         On traditional mutation classes definition you must implement the mutate function    """user=graphene.Field(UserType,required=False)classArguments:new_user=graphene.Argument(UserInput)classMeta:description=" Graphene traditional mutation for Users "@classmethoddefmutate(cls,root,info,*args,**kwargs):...
0

v0.0.1-rc.2:

importgraphenefromgraphene_django_extrasimportDjangoSerializerMutationfrom.serializersimportUserSerializerfrom.typesimportUserTypefrom.input_typesimportUserInputTypeclassUserSerializerMutation(DjangoSerializerMutation):"""        DjangoSerializerMutation auto implement Create, Delete and Update functions    """classMeta:description=" DRF serializer based Mutation for Users "serializer_class=UserSerializerclassUserMutation(graphene.Mutation):"""         On traditional mutation classes definition you must implement the mutate function    """user=graphene.Field(UserType,required=False)classArguments:new_user=graphene.Argument(UserInput)classMeta:description=" Graphene traditional mutation for Users "@classmethoddefmutate(cls,root,info,*args,**kwargs):...
1

v0.0.1-rc.1:

importgraphenefromgraphene_django_extrasimportDjangoSerializerMutationfrom.serializersimportUserSerializerfrom.typesimportUserTypefrom.input_typesimportUserInputTypeclassUserSerializerMutation(DjangoSerializerMutation):"""        DjangoSerializerMutation auto implement Create, Delete and Update functions    """classMeta:description=" DRF serializer based Mutation for Users "serializer_class=UserSerializerclassUserMutation(graphene.Mutation):"""         On traditional mutation classes definition you must implement the mutate function    """user=graphene.Field(UserType,required=False)classArguments:new_user=graphene.Argument(UserInput)classMeta:description=" Graphene traditional mutation for Users "@classmethoddefmutate(cls,root,info,*args,**kwargs):...
2

v0.0.1-β.10:

importgraphenefromgraphene_django_extrasimportDjangoSerializerMutationfrom.serializersimportUserSerializerfrom.typesimportUserTypefrom.input_typesimportUserInputTypeclassUserSerializerMutation(DjangoSerializerMutation):"""        DjangoSerializerMutation auto implement Create, Delete and Update functions    """classMeta:description=" DRF serializer based Mutation for Users "serializer_class=UserSerializerclassUserMutation(graphene.Mutation):"""         On traditional mutation classes definition you must implement the mutate function    """user=graphene.Field(UserType,required=False)classArguments:new_user=graphene.Argument(UserInput)classMeta:description=" Graphene traditional mutation for Users "@classmethoddefmutate(cls,root,info,*args,**kwargs):...
3

v0.0.1-β.9:

importgraphenefromgraphene_django_extrasimportDjangoSerializerMutationfrom.serializersimportUserSerializerfrom.typesimportUserTypefrom.input_typesimportUserInputTypeclassUserSerializerMutation(DjangoSerializerMutation):"""        DjangoSerializerMutation auto implement Create, Delete and Update functions    """classMeta:description=" DRF serializer based Mutation for Users "serializer_class=UserSerializerclassUserMutation(graphene.Mutation):"""         On traditional mutation classes definition you must implement the mutate function    """user=graphene.Field(UserType,required=False)classArguments:new_user=graphene.Argument(UserInput)classMeta:description=" Graphene traditional mutation for Users "@classmethoddefmutate(cls,root,info,*args,**kwargs):...
4

v0.0.1-β.6:

importgraphenefromgraphene_django_extrasimportDjangoSerializerMutationfrom.serializersimportUserSerializerfrom.typesimportUserTypefrom.input_typesimportUserInputTypeclassUserSerializerMutation(DjangoSerializerMutation):"""        DjangoSerializerMutation auto implement Create, Delete and Update functions    """classMeta:description=" DRF serializer based Mutation for Users "serializer_class=UserSerializerclassUserMutation(graphene.Mutation):"""         On traditional mutation classes definition you must implement the mutate function    """user=graphene.Field(UserType,required=False)classArguments:new_user=graphene.Argument(UserInput)classMeta:description=" Graphene traditional mutation for Users "@classmethoddefmutate(cls,root,info,*args,**kwargs):...
5

v0.0.1-β.5:

importgraphenefromgraphene_django_extrasimportDjangoSerializerMutationfrom.serializersimportUserSerializerfrom.typesimportUserTypefrom.input_typesimportUserInputTypeclassUserSerializerMutation(DjangoSerializerMutation):"""        DjangoSerializerMutation auto implement Create, Delete and Update functions    """classMeta:description=" DRF serializer based Mutation for Users "serializer_class=UserSerializerclassUserMutation(graphene.Mutation):"""         On traditional mutation classes definition you must implement the mutate function    """user=graphene.Field(UserType,required=False)classArguments:new_user=graphene.Argument(UserInput)classMeta:description=" Graphene traditional mutation for Users "@classmethoddefmutate(cls,root,info,*args,**kwargs):...
6

v0.0.1-β.4:

importgraphenefromgraphene_django_extrasimportDjangoSerializerMutationfrom.serializersimportUserSerializerfrom.typesimportUserTypefrom.input_typesimportUserInputTypeclassUserSerializerMutation(DjangoSerializerMutation):"""        DjangoSerializerMutation auto implement Create, Delete and Update functions    """classMeta:description=" DRF serializer based Mutation for Users "serializer_class=UserSerializerclassUserMutation(graphene.Mutation):"""         On traditional mutation classes definition you must implement the mutate function    """user=graphene.Field(UserType,required=False)classArguments:new_user=graphene.Argument(UserInput)classMeta:description=" Graphene traditional mutation for Users "@classmethoddefmutate(cls,root,info,*args,**kwargs):...
7

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java类。getResource和ClassLoader。getSystemResource:有没有理由选择其中一个而不是另一个?   在Java中以编程方式粘贴后恢复剪贴板   Java字符串到日期没有时间   JavaSpring注释:@Component起作用,@Repository不起作用   java“addScript”在HSQL中是否有最大记录计数?   java如何将值从JDialog框返回到父JFrame?   java我的模块库的用户有没有办法访问尚未导出的类?   java javac:未找到命令   java如何解决jsoup错误:无法找到请求目标的有效证书路径   类中的java作用域变量   Java中集合实现中的arraylist add()方法不起作用   java如何使用while循环和从用户接收输入来近似Pi?   java Spring安全CSRF培训模式   在安卓系统中,如何通过在警报框外单击来限制用户?