2016-11-15 4 views
0

У меня есть проект Python (я довольно новичок в Python), и на одной из веб-страниц есть раскрывающийся список, который должен отображать список всех проектов чьи поля «статус» настроены на «живые».Python - как запросить базу данных по классу

Похоже, что несколько отдельных объектов не отображаются в этом раскрывающемся списке, поэтому я хочу вручную запросить базу данных, чтобы проверить, для чего установлены их поля статуса.

Как вручную запросить базу данных для этих конкретных проектов по их «имени проекта»/«код проекта», оба из которых я знаю, уникальны?

Я попытался получить список всех проектов, в оболочке, так что я могу запросить этот список по project_name для конкретных проектов, которые я хочу с помощью команды:

from projects.models import Project 
prjcts = [] 
prjcts = Project.objects.all() 

Это становится все объектов Project и присваивает их списку prjcts. Теперь я хочу, чтобы запросить этот список для конкретного проекта, и старался делать так, как это:

6Stoke = prjcts.get(project_code = 6SPR) 

Мое намерение состояло в том, что проект с project_code, значение которого было 6SPR будет присвоено переменной 6Stoke, так что Затем я мог бы найти всю информацию для этого конкретного проекта. Однако, когда я попытался запустить эту строку в консоли, я получил предупреждение

SyntaxError: invalid syntax

в котором подчеркивается конец 6Stoke части линии.

Что не так с моим синтаксисом здесь? Как я могу получить проект с указанным project_code и назначить его переменной?

Редактировать

Ах, OK- спасибо. Я изменил имя переменного, и снова запускал запрос, назначая его результаты переменной sixStokeList, т.е.

sixStokeList = Project.objects.filter(project_code = "6SPR") 
  • это вернулось два пункта, и напечатав элементы массива на консоль, то есть sixStokeList[0] & sixStokeList[1], я знаю, какой я хочу, так что я назначен этот конкретный один переменной с:

    sixStoke = sixStokeList [1]

Затем я набрал sixStoke. и нажал «вкладку» на консоли, чтобы узнать, что доступно этой переменной. Я сделал то же самое с другим проектом, т.е.

theFoss = Project.objects.filter(project_code= "1TF") 
theFoss. (& pressed 'tab') 

Список доступных опций данных после ввода variable + . + tab была различной для каждого project, например, несмотря на то, я получил их обоих в точно таким же образом, что укажет мне, что они не являются экземплярами одного и того же класса ... как это может быть, учитывая, что я получил их обоих, запросив один класс?

+0

Это просто, что переменные не может начинаться с цифрами питона –

+2

Вы не можете назвать переменное начало с номером. Назовите его «SixStoke» или «Prj6Stoke» или «Stoke6» или что-то в этом роде. –

+0

6SPR (код проекта) является строкой? возможно, вам следует использовать вот так: '6Stoke = prjcts.get (project_code = '6SPR')' – Abiezer

ответ

2

Вы не можете назвать переменную начали с номером

+0

А, ок. Огромное спасибо. Я удалил номер и смог присвоить экземпляры класса переменным. Я назначил пару экземпляров для разных переменных, используя один и тот же метод 'filter()', просто передавая другое значение для 'project_code', на которое я фильтровал ... но кажется, что экземпляры этих двух переменных принадлежат разные классы, учитывая доступные для них варианты, различны - как это может быть дано, что я получил их обоих, запросив один класс? Я обновил свой вопрос, чтобы включить эту деталь ... – someone2088

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