我正在尝试通过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(以及其他所有如果我注释掉字段以查找违规者的情况)。
答案 0 :(得分:1)
尝试:
rspData = {
"pk": model.pk,
"problem": model.problem,
"solution": model.solution,
"primaryCategory": model.primaryCategory,
"secondaryCategory": model.secondaryCategory,
"profilePic": model.author.profilePic
}
您的字典缺少引号