[英]graphene-django add additional argument for DjangoFilterConnectionField and pass it to get_queryset
我向disposal_request
查詢添加了一個名為user_type
的附加參數,我想使用這個參數添加另一個過濾器,但是當我將它傳遞給get_queryset
函數時。 我收到以下錯誤: get_queryset() missing 1 required positional argument: 'user_type'
我不確定如何正確傳遞參數。
import graphene
import graphene_django
from app.disposer.models import DisposalRequest
from graphene_django.filter import DjangoFilterConnectionField
from graphql_jwt.decorators import login_required
class UserType(graphene.Enum):
as_collector = "as_collector"
as_disposer = "as_disposer"
class DisposalRequestsType(graphene_django.DjangoObjectType):
latitude = graphene.String()
longitude = graphene.String()
class Meta:
model = DisposalRequest
exclude = ("location",)
filter_fields = [
"uuid",
"disposal_status",
]
interfaces = (graphene.Node,)
convert_choices_to_enum = False
@classmethod
@login_required
def get_queryset(cls, queryset, info, user_type):
user = info.context.user
if user_type == UserType.as_collector:
print("as_collector")
return queryset.filter(collector=user)
elif user_type == UserType.as_disposer:
print("as_disposer")
return queryset.filter(disposer=user)
def resolve_latitude(self, _):
return self.location.x
def resolve_longitude(self, _):
return self.location.y
class DisposalQueries(graphene.ObjectType):
disposal_requests = DjangoFilterConnectionField(
DisposalRequestsType, user_type=UserType()
)
我最終將額外的過濾器放到了resolve_
函數中,並為DjangoFilterConnectionField
添加的額外字段傳遞了 **kwargs
import graphene
import graphene_django
from app.disposer.models import DisposalRequest
from graphene_django.filter import DjangoFilterConnectionField
from graphql_jwt.decorators import login_required
class UserType(graphene.Enum):
as_collector = "as_collector"
as_disposer = "as_disposer"
class DisposalRequestsType(graphene_django.DjangoObjectType):
latitude = graphene.String()
longitude = graphene.String()
class Meta:
model = DisposalRequest
exclude = ("location",)
filter_fields = [
"uuid",
"disposal_status",
]
interfaces = (graphene.Node,)
convert_choices_to_enum = False
def resolve_latitude(self, _):
return self.location.x
def resolve_longitude(self, _):
return self.location.y
class DisposalQueries(graphene.ObjectType):
disposal_requests = DjangoFilterConnectionField(
DisposalRequestsType, user_type=UserType()
)
@staticmethod
@login_required
def resolve_disposal_requests(_, info, user_type, **__):
user = info.context.user
if user_type == UserType.as_collector:
return DisposalRequest.objects.filter(collector=user).all()
elif user_type == UserType.as_disposer:
return DisposalRequest.objects.filter(disposer=user).all()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.