コード例 #1
0
class CategoryNode(DjangoNode):

    children = graphene.List(graphene.LazyType(lambda _: CategoryNode))
    parent = graphene.Field(graphene.LazyType(lambda _: CategoryNode))
    has_books = graphene.Boolean()
    books_count = graphene.Int()

    def __init__(self, *args, **kwargs):
        self.facets = kwargs.pop('facets', None)
        super(CategoryNode, self).__init__(*args, **kwargs)

    def resolve_books_count(self, *args):
        facets = getattr(self, 'facets', None)
        if facets is None:
            return self.instance.books.count()
        else:
            return facets.get(self.instance.pk, 0)

    def resolve_children(self, *args):
        return [
            CategoryNode(cat, facets=self.facets)
            for cat in self.instance.get_children()
        ]

    def resolve_parent(self, *args):
        return CategoryNode(self.instance.get_parent())

    def resolve_has_books(self, *args):
        return self.instance.books.exists()

    class Meta:
        model = Category
コード例 #2
0
class UserType(graphene.ObjectType):
    id = graphene.String()
    first_name = graphene.String(description='first name of the user')
    last_name = graphene.String(description='last name of the user')
    email = graphene.String(description='email of the user')
    username = graphene.String(description='username of the user')
    posts = graphene.List(graphene.LazyType(lambda _: PostType))
    comments = graphene.List(graphene.LazyType(lambda _: CommentType))
コード例 #3
0
class UserType(graphene.ObjectType):
    id = graphene.String()
    first_name = graphene.String(description='first name of the user')
    last_name = graphene.String(description='last name of the user')
    email = graphene.String(description='email of the user')
    username = graphene.String(description='username of the user')
    posts = graphene.List(graphene.LazyType(lambda _: PostType))
    comments = graphene.List(graphene.LazyType(lambda _: CommentType))

    @classmethod
    def resolve_posts(cls, obj, input, info):
        return obj.posts.all()

    def resolve_comments(obj, cls, input):
        return obj.comments.all()
コード例 #4
0
class PostType(graphene.ObjectType):
    id = graphene.String()
    title = graphene.String(description='title of the post')
    body = graphene.String(description='body of the post')
    comments = graphene.List(graphene.LazyType(lambda _: CommentType))
    user = graphene.Field(
        'UserType',
        id=graphene.ID(),
        description='User for this post',
    )

    @classmethod
    def resolve_comments(cls, obj, input, info):
        return obj.comments.all()
コード例 #5
0
class CategoryFacet(graphene.ObjectType):
    category = graphene.Field(graphene.LazyType(lambda _: CategoryNode))
    books_count = graphene.Int()