私はカスタムスカラーを使用しました。これが自動的にグラフェン - ジャンゴの中でより良いスカラーに変換されていればより良いでしょうが、ここでこれを修正しました。私たちは、その後
# converter.py
from graphene.types import Scalar
from graphql.language import ast
from graphene.types.scalars import MIN_INT, MAX_INT
class BigInt(Scalar):
"""
BigInt is an extension of the regular Int field
that supports Integers bigger than a signed
32-bit integer.
"""
@staticmethod
def big_to_float(value):
num = int(value)
if num > MAX_INT or num < MIN_INT:
return float(int(num))
return num
serialize = big_to_float
parse_value = big_to_float
@staticmethod
def parse_literal(node):
if isinstance(node, ast.IntValue):
num = int(node.value)
if num > MAX_INT or num < MIN_INT:
return float(int(num))
return num
# schema.py
from .converter import BigInt
class MatchType(DjangoObjectType):
game_id = graphene.Field(BigInt)
class Meta:
model = Match
interfaces = (graphene.Node,)
filter_fields = {}
MAX_INTよりも大きい数値がある場合は、int型ではなくfloatを使用するカスタムのBigIntスカラー、とconverter.pyファイルを書きました