Не работают специфические для клубничного Django запросы Graphql, кроме pk
У меня проблемы с созданием специфических запросов с помощью библиотеки Strawberry. Допустим, у меня есть две модели Django:
class Address(models.Model):
name = models.CharField()
class Person(models.Model):
name = models.CharField()
address = models.ForeignKey('Address', on_delete=models.CASCADE, blank=False, null=False)
с моим type.py
файлом:
@strawberry.django.type(models.Address)
class Address:
id: auto
name:auto
@strawberry.django.input(models.Address)
class AddressInput:
id: auto
name:auto
@strawberry.django.type(models.Person)
class Person:
id: auto
name: auto
address:'Address'
@strawberry.django.input(models.Person)
class Person:
id: auto
name: auto
address:'AddressInput'
и schema.py:
@strawberry.type
class Query:
address: Address = strawberry.django.field()
addresses: List[Address] = strawberry.django.field()
person: Person = strawberry.django.field()
persons: List[Person] = strawberry.django.field()
schema = strawberry.Schema(query=Query)
В терминале graphiql, если я хочу получить id для Person, это работает нормально:
#Query
query MyQuery {
person(pk: "1") {
address {
id
name
}
id
name
}
}
#Return value
{
"data": {
"person": {
"address": {
"id": "1",
"name": "Compound"
},
"id": "1",
"name": "William"
}
}
}
Но если я пытаюсь искать по идентификатору адреса или имени человека, это не работает. Все следующие запросы не работают
query MyQuery {
person(name: "William") {
address {
id
name
}
id
name
}
}
query MyQuery {
person(data: {name: "William"}) {
address {
id
name
}
id
name
}
}
query MyQuery {
person(address: {id: "1"}) {
address {
id
name
}
id
name
}
}
query MyQuery {
person(data: {address: {id: "1"}}) {
address {
id
name
}
id
name
}
}
Выдает эту ошибку:
{
"data": null,
"errors": [
{
"message": "Unknown argument 'title' on field 'Query.person'.",
"locations": [
{
"line": 2,
"column": 10
}
]
}
]
}
Я предполагаю, что проблема связана с тем, что strawberry.django.field()
в Schema.py ограничивает поля только идентификатором (pk). Есть ли способ исправить это?