2016-12-23 2 views
1

У меня есть база данных, где данные организованы уникальным числом и имя, которое не является уникальным. например:Можете ли вы использовать .filter и .get в том же запросе для Django?

NumCOL: NameCOL: 
1  Jay 
2  Joel 
3  Joey 
4  Joel 

Могу ли я использовать фильтр и получить утверждение, чтобы захватить имена, где число равно определенное число? Скажем, у меня есть форма, которая позволяет пользователю выбрать номер из базы данных, и пользователь выбирает номер 2.

num = request.POST.get('FormNumber') #num = 2 
name = Database.objects.filter(NumCOL=num).get('NameCOL') 
return HttpResponse(name) 

можно сделать что-то подобное? Я хочу получить имя везде, где пользователь выбирает, исходя из их числа. Основываясь на коде, я должен получить ответ Joel.

Спасибо за помощь!

+0

Э-э, это не то, что 'get' делает. Это для получения одного элемента, который соответствует запросу, а не для получения одного столбца. –

ответ

1

Как указал даниэль в комментариях и в ответах от metmirr, вам не нужно делать это так. Следующие работы просто прекрасны.

name = Database.objects.get(NumCOL=num) 
return HttpResponse(name.NameCOL) 

Извлечение всех полей одной модели не добавляет никаких накладных расходов на запрос. Get используется для извлечения одной строки, а не одного столбца.

Для извлечения одного столбца, вы можете сделать:

name = Database.objects.filter(NumCOL=num).values('NameCol') 

Чтобы получить одну ячейку можно сделать

name = Database.objects.filter(NumCOL=num).values_list('NameCol', flat=True) 

Как примечание стороны, по соглашению мы называем модель с первым буква в верхнем регистре и поля - все в нижнем регистре.

+0

Спасибо за ответ! Эта информация будет очень полезна! – GreenSaber

+0

Добро пожаловать. Я рад помочь. Поскольку вы все еще новичок здесь, могу ли я указать, что предпочтительный способ сказать «спасибо» здесь - это хорошие вопросы и полезные ответы (когда у вас достаточно репутации, чтобы это сделать) и приняв самый полезный ответ на любой интересующий вас вопрос (что также дает небольшой импульс вашей репутации). [Когда кто-то отвечает] (http://stackoverflow.com/help/someone-answers) – e4c5

+0

Я устал проголосовать, но я слишком новичок :( – GreenSaber

2
name = Database.objects.get(NumCOL=num) 
#name = Database.objects.filter(NumCOL=num) 
return HttpResponse(name.NameCOL) 
Смежные вопросы