gpt4 book ai didi

django - Graphene-Django - 如何将参数从 Query 传递给类 DjangoObjectType

转载 作者:行者123 更新时间:2023-12-03 17:25:46 25 4
gpt4 key购买 nike

首先,谢谢!已经 1 年没有问问题了,因为我总能找到答案。你是一个巨大的帮助。

今天,我确实有一个我自己无法解决的问题。
拜托了,我希望你能在这件事上帮助我。

上下文:我在一个使用 Django 框架的项目上工作,我有一些用 react.js 制作的动态页面。我在两者之间使用的 API 是基于 graphQL 的。 Apollo 为客户端,graphene-django 为后端。

我想做一个由 GraphQL 查询制成的动态页面,该查询具有一组(DjangoObjectType 类中的声明字段,由 Django 查询制成),并且我希望能够使用参数 A 动态过滤父级,并使用参数 B。我的问题是如何找到一种方法将参数 B 传递给集合以对其进行过滤。

我将基于 graphQL 文档实现的 graphQL

query DistributionHisto
(
$id:ID,
$limit:Int
)
{
distributionHisto(id:$id)
{
id,
historical(limit:$limit)
{
id,
date,
histo
}
}
}

但我不明白如何在后端将 (limit:$limit) 传递给我的集合。

这是我的 schema.py
import graphene
from graphene_django.types import DjangoObjectType

class DistributionType(DjangoObjectType):
class Meta:
model = DistributionTuple

historical = graphene.List(HistoricalTimeSeriesType)

def resolve_historical(self, info):
return HistoricalTimeSeries.objects.filter(
distribution_tuple_id=self.id
).order_by('date')[:2]

class Query(object):
distribution_histo = graphene.List(
graphene.NonNull(DistributionType),
id=graphene.ID(),
limit=graphene.Int()
)

def resolve_distribution_histo(
self, info, id=None, limit=None):
filter_q1 = {'id': id} if id else {}
return DistributionTuple.objects.filter(**filter_q1)

我尝试了几件事,但到目前为止我还没有找到让它工作的方法。

目前,如您所见,参数“限制”在 def resolve* 中达到了死胡同,理想情况下,它将传递给类 DistributionSetHistoType,在那里它将用 [:limit] 替换切片 [:2] resolve_distribution_slice_set()

我希望我已经清楚了,如果不是这样,请告诉我。

谢谢您的支持。

最佳答案

这个话题叫pagination .

  • front end seletion
  • const { loading, error, data, fetchMore } = useQuery(GET_ITEMS, {
    variables: {
    offset: 0,
    limit: 10
    },
    });
  • backend selction
  • 号码10.count(10)表示数组中的前 10 个元素
  • DistributionTuple.objects.filter(**filter_q1).count(10)

    关于django - Graphene-Django - 如何将参数从 Query 传递给类 DjangoObjectType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61226547/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com