Доступ к полям модели Django приводит к появлению NameError внутри словаря - PullRequest
0 голосов
/ 30 октября 2019

Я пытаюсь вернуть словарь с помощью 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)

Мне нужно получить URL-адресаи еще много других моделей, поэтому я не могу просто использовать сериализаторы DRF, как на других своих моделях. Что должно произойти, это то, что я установил каждое из необходимых полей в словаре, а затем возвратил это с помощью Response (), но я не могу получить доступ к полям модели из словаря rspData. Вместо этого Django выдает ошибку NameError в первой строке dict (и любые другие, если я закомментирую поля для поиска нарушителей).

1 Ответ

1 голос
/ 30 октября 2019

Попробуйте:

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

В вашем запросе отсутствуют кавычки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...