Django Graphene (GraphQL) фильтр на ManyToMany
Я работаю над приложением, используя Django. Мы открыли модели с помощью Graphene. У нас есть следующие модели:
class Agent(models.Model):
id = models.UUIDField(default=uuid.uuid4, unique=True, primary_key=True, editable=False)
name = models.CharField(
max_length=MAX_LENGTH,
null=True, blank=True,
help_text="Name of the agent"
)
teams = models.ManyToManyField(
'Team', blank=True,
help_text="The teams of which the user is part"
)
class Team(models.Model):
id = models.UUIDField(default=uuid.uuid4, unique=True, primary_key=True, editable=False)
name = models.CharField(
max_length=MAX_LENGTH,
help_text="Name of the team"
)
Теперь я пытаюсь выполнить фильтр для поля ManyToMany. Но я не могу заставить его работать. Я пытаюсь воспроизвести следующий запрос Django в GrapQL:
teams = [
Team.objects.get(id="6d6d1d4d-c1b4-485a-9269-f7e9d06d862a"),
Team.objects.get(id="7e082abf-584b-4858-b510-4c71fc295e2f"),
]
agents = Agent.objects.filter(teams__in=teams).distinct()
Я попытался добиться этого, включив фильтр 'in' на узле.
class AgentNode(DjangoObjectType):
class Meta:
model = Agent
filter_fields = {
"teams": ["in"]
}
Затем я попытался выполнить следующий запрос, но он не сработал, как ожидалось:
query getAllAgents{
allAgents(teams_In:["6d6d1d4d-c1b4-485a-9269-f7e9d06d862a, 7e082abf-584b-4858-b510-4c71fc295e2f"]) {
id
name
teams {
id
name
}
}
}
Это дает мне следующую ошибку:
{
"errors": [
{
"path": [
"allAgents"
],
"message": "'list' object has no attribute 'split'",
"locations": [
{
"column": 3,
"line": 2
}
]
}
],
"data": {
"allAgents": null
}
}
Кто-нибудь знает, как я могу заставить это работать? Я уже всю голову сломал над этим.
Python=2.7
Django==1.10.8
graphene-django==2.2.0
graphene-django-extras==0.3.5
django-filter==1.0.4
(я знаю, что версии старые, но для этого проекта мы должны работать с ними)