当我查询求职者档案时,如果没有求职者数据,那么我得到一个错误JobSeeker models query does not exist
。相反,如果没有数据,我希望传递空列表。为此,我尝试了以下方法,但我得到了一个错误,因此无法通过自定义响应
class JobSeekerNode(DjangoObjectType):
class Meta:
model = models.JobSeeker
interfaces = (relay.Node, )
class JobSeekerQueries(ObjectType):
job_seeker = Field(JobSeekerNode)
def resolve_job_seeker(self, info, **kwargs):
data = {}
if info.context.user.is_authenticated:
try:
profile = Profile.objects.get(user=info.context.user)
try:
job_seeker = models.JobSeeker.objects.get(profile=profile)
data['job_seeker'] = job_seeker
except:
# when there's no row instead of passing error, pass empty list
data['job_seeker'] = []
return JsonResponse(data)
except Profile.DoesNotExist:
return []
return None
这是我在尝试传递自定义响应时遇到的错误(如果没有数据,则为空列表)
{
"errors": [
{
"message": "Received incompatible instance \"<JsonResponse status_code=200, \"application/json\">\"."
}
],
"data": {
"job_seeker": null
}
}
我甚至试过这个
def resolve_job_seeker(self, info, **kwargs):
if info.context.user.is_authenticated:
try:
profile = Profile.objects.get(user=info.context.user)
try:
job_seeker = models.JobSeeker.objects.get(profile=profile)
return job_seeker
except:
return models.JobSeeker.objects.none()
except Profile.DoesNotExist:
return []
return None
我还是有这样的问题
{
"errors": [
{
"message": "Received incompatible instance \"<QuerySet []>\"."
}
],
"data": {
"job_seeker": null
}
}
如果
JobSeeker
是一个模型,那么它应该是JobSeeker.objects.filter
。惯例不能返回在查询对象中定义的自定义内容。 您正在调用
get
方法。objects.get()
返回单个对象而不是列表。 一个更简单的解决方案是调用filter()
如果没有任何匹配的配置文件,它将返回一个空列表。 在这两种情况下,只要返回求职者。 如果这是您想要的,就不需要使用像data这样的额外字段。你知道吗
相关问题 更多 >
编程相关推荐