我正在尝试根据ProductLandingpageImage模型上的“订单”字段对ProductLandingPageImageNode重新排序。
如果这将是一个直接查询,我可以编写一个resolve方法,但是我无法找出在子查询中如何做到这一点。
主要查询:
Select * from table1, table2
PRODUCTNODE:
class Query(graphene.ObjectType):
class Meta:
interfaces = [relay.Node, ]
product_oscar = graphene.List(ProductNode)
productByID = DjangoFilterConnectionField(ProductNode)
def resolve_product_oscar(self, info, **kwargs):
return Product.objects.all()
PRODUCTLANDINGPAGEIMAGENODE:
class ProductNode(DjangoObjectType):
class Meta:
model = Product
interfaces = (relay.Node, )
filter_fields = {
"slug" : ['iexact']
}
如何解决这个问题?
根据要求提供LANDINGPAGEIMAGE模型:
class ProductLandingpageImageNode(DjangoObjectType):
class Meta:
model = ProductLandingpageImage
interfaces = (relay.Node, )
Meta中的默认排序不起作用。当我用Graphql查询订单值时,不是不返回“ 1、2、3 ...”而是返回“ A_1,A_2 ...”
,这也很奇怪。答案 0 :(得分:1)
也许是这样的。由于您未列出您的产品型号,因此我只是在产品上填写了引用图片的字段名称,因此您应该重命名该字段。如果产品和图片之间存在多对一的关系,那么您可能想要一个不同的字段名称。
import graphene
from graphene.django.types import DjangoObjectType
class ProductNode(DjangoObjectType):
name_of_your_image_field = graphene.Field(ProductLandingpageImageNode)
class Meta:
model = Product
... other Meta data
def resolve_name_of_your_image_field(self, info): # rename to match field
# Put the code that returns a single ProductLandingpageImage instance here
# graphene-django will convert your ProductLandingPageImage instance into a ProductLandingpageImageNode
这是为了返回单个ProductLandingPageIMage
。如果要返回多个实例,则将字段定义更改为列表
name_of_your_image_field = graphene.List(ProductLandingpageImageNode)
,然后在您的解析器中返回多个ProductLandingPageImage实例-例如,按所需方式排序的查询集。