Базовый запрос в django graphql не работает с реляционными моделями

Это мой models.py

class Player(models.Model):
    user = models.OneToOneField(get_user_model(), on_delete=models.CASCADE)
    username = models.CharField(max_length=25)

class Challange(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    status = models.CharField(max_length=25, choices=StatusChoice.choices)
    from_player = models.ForeignKey(Player, related_name='my_challenges', on_delete=models.SET(get_sentinel_user))
    to_player = models.ForeignKey(Player, related_name='challanges', on_delete=models.SET(get_sentinel_user))

schema.py

class ChallangeType(DjangoObjectType):
    class Meta:
        model = Challange
        fields = ['id', 'status', 'from_player', 'to_player']

class Query(graphene.ObjectType):
    challanges = graphene.List(ChallangeType)

    def resolve_challanges(root, info):
        user = info.context.user
        return Challange.objects.filter(to_player=user.player, status=StatusChoice.WAITING)

schema = graphene.Schema(query=Query)

Я хочу получить вызовы, касающиеся зарегистрированного пользователя, все работает, когда я требую поля 'id' и 'status', но когда я пытаюсь добавить "from_player" или "to_player", я получаю ошибку

"Cannot query field 'from_player' on type 'ChallangeType'". Также, эти поля (from_player, to_player) не показывают нам подсказки при написании.

enter image description here

Я решил эту проблему, добавив дополнительный DjangoObjectType к ChallangeType

class PlayerType(DjangoObjectType):
    class Meta:
        model = Player
        fields = ["username", 'id']

class ChallangeType(DjangoObjectType):
    class Meta:
        model = Challange
        fields = "__all__"

    player = graphene.Field(PlayerType)
Вернуться на верх