Заказать Союз от made_at - PullRequest
       26

Заказать Союз от made_at

0 голосов
/ 06 апреля 2020

У меня есть графен.Союз двух моделей, и я связываю, чтобы упорядочить ответ по полю созданного_, ведь поле совпадает для обеих моделей. Есть ли такое?

Schema.py


class PostUnion(graphene.Union):
    class Meta:
        types = (PostType, Post2Type)

    @classmethod
    def resolve_type(cls, instance, info):
        # This function tells Graphene what Graphene type the instance is
        if isinstance(instance, Post):
            return PostType
        if isinstance(instance, Post2):
            return Post2Type
        return PostUnion.resolve_type(instance, info, search)


class Query(graphene.ObjectType):
    all_posts = graphene.List(PostUnion, search=graphene.String(), limit=graphene.Int())

    def resolve_all_posts(self, info, search=None, limit=None):
        if search:
            filter = (
                Q(id__icontains=search) |
                Q(title__icontains=search)
            )
            return (list(Post.objects.filter(filter)) + list(Post2.objects.filter(filter)))[:limit]

        return (list(Post.objects.all()) + list(Post2.objects.all()))[:limit]

{
  allPosts(Order: "created_at") {
    ... on PostType {
      id
      title
      createdAt
    }
    ... on Post2Type {
      id
      title
      createdAt
    }
  }
}
...