У меня есть графен.Союз двух моделей, и я связываю, чтобы упорядочить ответ по полю созданного_, ведь поле совпадает для обеих моделей. Есть ли такое?
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
}
}
}