访问Django模型字段会在字典中引发NameError

2024-09-30 07:22:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图通过DRF的Response()返回字典,但无法从字典中访问任何模型字段

我尝试在不将数据打包到字典的情况下返回单个字段的值,结果成功了。我知道Django的QuerySet是懒惰的,只在计算时命中DB,但我很困惑,为什么我的模型在字典中访问时突然没有字段

@api_view(['GET'])
def arDetail(request):
    '''
    gets data from model and puts it into a dict to be returned
    '''
    model = model.objects.get(pk=int(request.GET["pk"]))
    #return Response(model.pk) WORKS here, but throws a nameerror
    #when accessed in rspData
    rspData = {
        pk: model.pk,
        problem: model.problem,
        solution: model.solution,
        primaryCategory: model.primaryCategory,
        secondaryCategory: model.secondaryCategory,
        profilePic: model.author.profilePic
    }
    return Response(rspData)

我需要从其他模型中提取URL等等,所以我不能像在其他模型上那样只使用DRF的序列化程序。应该做的是,我在字典中设置了每个必要的字段,然后用Response()返回,但我无法从rspData字典中访问模型字段。相反,Django会在dict的第一行抛出一个NameError(如果我注释掉字段以查找违规者,则还会抛出其他任何字段)


Tags: django模型getmodelreturn字典responserequest
1条回答
网友
1楼 · 发布于 2024-09-30 07:22:31

尝试:

    rspData = {
        "pk": model.pk,
        "problem": model.problem,
        "solution": model.solution,
        "primaryCategory": model.primaryCategory,
        "secondaryCategory": model.secondaryCategory,
        "profilePic": model.author.profilePic
    }

你的口述缺少引号

相关问题 更多 >

    热门问题