2014-01-12 3 views
-2

Предположим, у меня есть база данных под названием «A», эта база данных имеет только две записи «имя: Jhon» и «name: Sara», а также ядро ​​базы данных «B», которое имеет имена «Jhon» и «Sara» среди других имен, как я могу искать базу данных B только для имен Jhon и Sara?Продвинутые запросы к базе данных с Django

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

Как это сделать?

+2

Похоже, довольно широкий вопрос. Кроме того, вы, кажется, запутываете «базу данных» для «таблицы». –

+0

Прошу прощения, что я очень плохо знаю о базах данных. Я не знаю, как бы стол мог помочь. –

+0

Если вы не знаете, «как поможет таблица», я настоятельно призываю вас отбросить все это и погрузиться в обучение какие базы данных и как они работают. –

ответ

0

Как правило, модель django сопоставляется с одной таблицей базы данных. Каждый атрибут модели представляет собой поле базы данных.

В следующем примере retrieve a list имен из первого Model (названных «А»), а затем searches в «B» для любой записи, имеющее значение атрибута namein этого список.

names_to_search = A.objects.all().values_list('name', flat=True) 
people = B.objects.filter(name__in=names_to_search) 

Я предполагаю, что А и В есть поле под названием name.

+0

Огромное вам спасибо за ваш сэр !, Еще один вопрос, что такое плоский = Правда? –

+0

Если вы переносите только одно поле в значение_list, вы также можете перейти в параметр 'flat'. Если 'True', это будет означать, что возвращаемые результаты - это одиночные значения, а не однострочные. Пожалуйста, прочитайте связанные документы django: https://docs.djangoproject.com/en/1.6/ref/models/querysets/#django.db.models.query.QuerySet.values_list – furins

+0

Все верно! Спасибо огромное! –

0

База данных содержит таблицы, имеющие атрибуты. В этом случае у вас есть 2 таблицы A и B. У вас есть атрибут «name» для каждой таблицы.

Я не понимаю, что вы пытаетесь сделать, но если вы хотите запросить таблицу с именем в Django,

person = A.objects.get(name=myName) 

Так что, если вы хотите знать, если Йон в таблице А,

try: 
    person = A.objects.get(name="Jhon") 
    #Jhon exists. 
except ObjectDoesNotExist: 
    #Jhon does not exists. 
+0

Большое вам спасибо! Но если я хочу знать, находится ли Jhon в таблице A также в таблице B? –

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