Django Graphene, данные заказа возвращаются вложенным ответом

У меня есть две таблицы, которые содержат данные о заказах и данные о товарах в этих заказах.

Я хочу вернуть данные из таблицы продуктов, но в алфавитном порядке.

schema

# 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": "",
            "cardMarketPurchaseOrdersProductsOrderId": [
              {
                "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"
              },
              ...

Не знаю точной структуры ваших моделей, но что-то вроде этого должно работать.

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")
Вернуться на верх