【问题标题】:Django Graphene, sort data returned in nested responseDjango Graphene,对嵌套响应中返回的数据进行排序
【发布时间】:2022-06-21 15:37:56
【问题描述】:

我有两个表,其中包含这些订单中的订单数据和产品数据。

我想按字母顺序返回 products 表中的数据。

架构

# region Purchase Orders
class PurchasesProducts(DjangoObjectType):
    id = graphene.ID(source='pk', required=True)

    class Meta:
        model = purchase_orders_products


class Purchases(DjangoObjectType):
    id = graphene.ID(source='pk', required=True)

    class Meta:
        model = purchase_orders
        interfaces = (relay.Node,)
        filter_fields = {}
        connection_class = ArtsyConnection


class PurchasesQuery(ObjectType):
    purchases = ArtsyConnectionField(Purchases)

    @staticmethod
    def resolve_purchases(self, info, **kwargs):
        return purchase_orders.objects.filter(user_id=info.context.user.id).all().order_by("-date")


purchasesSchema = graphene.Schema(query=PurchasesQuery)
# endregion

返回的采购订单数据按日期降序正确排序。但是,为订单中的产品返回的数据不按任何排序。我想按名称的字母顺序对产品进行排序。

回复

      ...
      "edges": [
        {
          "node": {
            "id": "",
            "cmOrderId": "",
            "username": "",
            "date": "2022-04-28T20:16:05",
            "articles": 10,
            "merchandiseValue": "",
            "shippingValue": "",
            "trusteeValue": "",
            "totalValue": "",
            "PurchaseOrdersProductsOrderId": [
              {
                "id": "",
                "productId": "",
                "productName": "Yasharn, Implacable Earth",
                "productNumber": "148",
                "quantity": 1,
                "foil": false,
                "condition": "NM",
                "language": "ENG",
                "cost": "",
                "status": "INCOMING"
              },
              {
                "id": "",
                "productId": "",
                "productName": "Magmatic Channeler",
                "productNumber": "240",
                "quantity": 3,
                "foil": false,
                "condition": "NM",
                "language": "ENG",
                "cost": "",
                "status": "INCOMING"
              },
              ...

【问题讨论】:

    标签: python django graphql graphene-python


    【解决方案1】:

    不知道你的模型的确切结构,但这样的东西应该可以工作。

    from graphene_django.fields import DjangoConnectionField
    
    class Purchases(DjangoObjectType):
        id = graphene.ID(source='pk', required=True)
        purchase_products = DjangoConnectionField(PurchasesProducts)
    
        class Meta:
            model = purchase_orders
            interfaces = (relay.Node,)
            filter_fields = {}
            connection_class = ArtsyConnection
    
        @classmethod
        def resolve_purchase_products(cls, instance, info):
            return purchase_orders_products.objects.filter(
                purchase_id=instance.pk).order_by("product__name")
    

    【讨论】:

      猜你喜欢
      • 2019-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多