2015-05-02 2 views
-1

я должен передать объект ForeignKey в ответ JSON, я делаю это так:Получение значение ForeignKey вместо ID

data = {} 
p = Bets.objects.create(bet_id=request.POST['team'],number=number) 
data['success'] = p 
return HttpResponse(json.dumps(data), content_type='application/json') 

bet_id поле является ForeignKey и число является CharField, если в data['success'] I пройти p.number я могу пройти его без проблем, но когда я прохожу p.bet_id я получить идентификатор этого ForeignKey, мне нужно, чтобы получить значение, я пытаюсь с подстановок полей с p.bet_id__name, но я получаю следующее сообщение об ошибке:

'Bets' object has no attribute 'bet_id__name'

My m а также:

class Teams(models.Model): 
    name = models.CharField(max_length=100) 

class Bets(models.Model): 
    bet = models.ForeignKey(Teams) 
    number = models.CharField(max_length=255) 

Как я могу получить значение вместо идентификатора?

+0

Пожалуйста, покажите ваши модели кода. – Joseph

+0

Если вы получаете сообщение об ошибке в строке кода, вы должны хотя бы * показать эту строку *. –

+0

Ok @ Джозеф, я добавил модель @DanielRoseman линии ошибки является 'данных [«успех»] = p' – dfrojas

ответ

1

Вы хотите использовать:

data['success'] = p.bet.name 

Обратите внимание, что это создаст второй SQL запрос к вашей БД, чтобы загрузить объект команды, привязанный к p.bet. Для того, чтобы сэкономить немного накладных расходов, вы можете изменить эту строку:

Bets.objects.create(bet_id=request.POST['team'],number=number) 

Для этого:

Bets.objects.create(bet_id=request.POST['team'],number=number).select_related('bet') 
+0

Я попробовал, что и раньше, но им все еще получает ту же ошибку: ' объект «» BETS не имеет атрибута 'bet__name'' – dfrojas

+0

Извините, моя ошибка, я думал о синтаксисе запроса. Я отредактирую свой ответ, секунду. – Joseph

Смежные вопросы