GraphQL:如何对节点的 "foreign key" 集合项进行排序?
GraphQL: how to sort node's "foreign key" set items?
我使用 Django,graphene-django and django-filter 构建 GraphQL api 并且遇到问题 orderBy
:
总的来说:我有院系,每个院系都有几个系。我可以对院系进行分类,但不能对院系进行分类。
Django 模型:
class Faculty(models.Model):
code = models.CharField(...)
class Department(models.Model):
code = models.CharField(...)
faculty = models.ForeignKey(
Faculty,
on_delete=models.CASCADE,
related_name="departments",
)
为了能够对院系进行排序,我添加了:
import graphene
import django_filters
from graphene import relay, ObjectType
from django_filters import OrderingFilter
from graphene_django.types import DjangoObjectType
from graphene_django.filter import DjangoFilterConnectionField
class FacultyFilter(django_filters.FilterSet):
class Meta:
model = Faculty
fields = ['university']
order_by = OrderingFilter(fields=('code',))
class DepartmentFilter(django_filters.FilterSet):
class Meta:
model = Department
fields = ['university', 'faculty']
order_by = OrderingFilter(fields=('code',))
class Query(object):
faculty = relay.Node.Field(FacultyNode)
all_faculties = DjangoFilterConnectionField(
FacultyNode,
filterset_class=FacultyFilter,
)
department = relay.Node.Field(DepartmentNode)
all_departments = DjangoFilterConnectionField(
DepartmentNode,
filterset_class=DepartmentFilter,
)
为什么我无法对一组部门进行排序?
将此字段添加到节点:
class FacultyNode(DjangoObjectType):
departments = DjangoFilterConnectionField(
DepartmentNode, # lambda: DepartmentNode (if Node is defined later)
filterset_class=DepartmentFilter,
)
我使用 Django,graphene-django and django-filter 构建 GraphQL api 并且遇到问题 orderBy
:
总的来说:我有院系,每个院系都有几个系。我可以对院系进行分类,但不能对院系进行分类。
Django 模型:
class Faculty(models.Model):
code = models.CharField(...)
class Department(models.Model):
code = models.CharField(...)
faculty = models.ForeignKey(
Faculty,
on_delete=models.CASCADE,
related_name="departments",
)
为了能够对院系进行排序,我添加了:
import graphene
import django_filters
from graphene import relay, ObjectType
from django_filters import OrderingFilter
from graphene_django.types import DjangoObjectType
from graphene_django.filter import DjangoFilterConnectionField
class FacultyFilter(django_filters.FilterSet):
class Meta:
model = Faculty
fields = ['university']
order_by = OrderingFilter(fields=('code',))
class DepartmentFilter(django_filters.FilterSet):
class Meta:
model = Department
fields = ['university', 'faculty']
order_by = OrderingFilter(fields=('code',))
class Query(object):
faculty = relay.Node.Field(FacultyNode)
all_faculties = DjangoFilterConnectionField(
FacultyNode,
filterset_class=FacultyFilter,
)
department = relay.Node.Field(DepartmentNode)
all_departments = DjangoFilterConnectionField(
DepartmentNode,
filterset_class=DepartmentFilter,
)
为什么我无法对一组部门进行排序?
将此字段添加到节点:
class FacultyNode(DjangoObjectType):
departments = DjangoFilterConnectionField(
DepartmentNode, # lambda: DepartmentNode (if Node is defined later)
filterset_class=DepartmentFilter,
)