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")