This is my 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)
I want to get challenges concerns logged user, everything work when I demand 'id' and 'status' fields, but when I try add "from_player" or "to_player" I recive error
"Cannot query field 'from_player' on type 'ChallangeType' Also, this fields(from_player, to_player) doesn't show us hints while writing.
I solved it by adding additional DjangoObjectType to ChallangeType
class PlayerType(DjangoObjectType):
class Meta:
model = Player
fields = ["username", 'id']
class ChallangeType(DjangoObjectType):
class Meta:
model = Challange
fields = "__all__"
player = graphene.Field(PlayerType)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.