Я делаю кросс-пост из этого репозитория: https://github.com/graphql-python/graphene-django/issues/938
У меня есть этот графеновый узел
class TripNode(DjangoObjectType):
legs = List(LegNode)
# Need explicit pk when forming TripNode manually and querying for id
pk = String(source="id")
class Meta:
model = Trip
interfaces = (relay.Node,)
Средство распознавания извлекает некоторые удаленные данные и разрешает legs
там, поскольку legs
также получено из этих удаленных данных.
def resolve_trips(root, info, **kwargs):
response = requests.get("")
return [
TripNode(
**{
"id": uuid.uuid4(),
"origin": trip["origin"],
"legs": [
TripLeg(
origin_hub=leg["flyFrom"],
id=uuid.uuid4(),
)
for leg in trip["route"]
],
}
)
for trip in response.json()["data"]
]
Обычно я бы вместо этого возвратил список Trip
s, но я не могу использовать модель Django здесь потому что я разрешаю дополнительное поле legs
, которое не существует в модели. Одна из причин этого заключается в том, что оно должно быть упорядочено, чтобы поле «один ко многим» было бы недостаточно без какого-либо добавления.
Если я верну список Trips
без legs
, это сработает хорошо, и клиент не перезаписывает результаты предыдущего запроса новыми. Но это странное поведение перезаписи происходит, когда я использую TripNode
, и это единственное отличие. Я думаю, что это связано с тем, что в этом случае не соблюдается какой-то стандарт GraphQL.
Я в растерянности оттого, что происходит, и буду благодарен за любые мысли.