访问Django模型字段会在字典内抛出NameError

时间:2019-10-29 22:56:59

标签: python django dictionary django-rest-framework

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

我尝试返回单个字段的值,而没有先将数据打包到字典中,然后它起作用了。我知道Django的查询集是惰性的,只会在评估时访问数据库,但是我为为什么在字典中访问模型时突然没有字段而感到困惑。

@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)

我需要从其他模型中提取URLS和其他信息,所以我不能像在其他模型上那样仅使用DRF的序列化器。应该发生的是,我在字典中设置了每个必填字段,然后使用Response()返回该字段,但是我无法从rspData字典中访问模型字段。取而代之的是,Django在字典的第一行上引发NameError(以及其他所有如果我注释掉字段以查找违规者的情况)。

1 个答案:

答案 0 :(得分:1)

尝试:

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

您的字典缺少引号