【问题标题】:Accessing Django model fields throws NameError inside of dictionary访问 Django 模型字段会在字典中引发 NameError
【发布时间】:2019-10-29 22:56:59
【问题描述】:

我正在尝试通过 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 (如果我注释掉字段以查找违规者,还有任何其他)。

【问题讨论】:

  • 用完整的回溯显示实际错误。

标签: python django dictionary django-rest-framework


【解决方案1】:

试试:

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

您的字典缺少引号

【讨论】:

  • 就是这样!我责怪 JS ;)
  • 我通过变量的类型发现了 js :) rsp_data != rspData
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-29
  • 2011-06-06
  • 2021-10-17
  • 2013-03-16
  • 2023-04-03
  • 2014-10-21
相关资源
最近更新 更多