2016-11-15 1 views
0

J'ai un projet Python (je suis assez nouveau sur Python), et sur l'une des pages web, il y a une liste déroulante qui devrait afficher une liste de tous les projets dont les champs 'status' sont définis sur 'live'.Python- comment interroger la base de données par classe

Il semble que certains objets particuliers ne s'affichent pas dans cette zone de liste déroulante. Par conséquent, je souhaite interroger manuellement la base de données pour vérifier à quel champ d'état est défini. Comment puis-je interroger manuellement la base de données pour ces projets particuliers par leur «nom de projet»/«code de projet», dont je sais que les deux sont uniques?

J'ai essayé d'obtenir une liste de tous les projets dans la coquille, afin que je puisse interroger cette liste par project_name pour les projets particuliers que je veux utiliser les commandes:

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

Ce GETS all des objets Project et les affecte à la liste prjcts. Je veux maintenant interroger cette liste pour un projet particulier, et ont essayé de le faire comme ceci:

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

Mon intention était que le projet avec la project_code dont la valeur a été 6SPR serait affecté à la 6Stoke variables, de sorte que Je pourrais alors trouver regarder toutes les informations pour ce projet particulier. Cependant, quand j'ai essayé d'exécuter cette ligne dans la console, je suis un avertissement

SyntaxError: invalid syntax

qui a mis en évidence la fin de la 6Stoke partie de la ligne.

Quel est le problème avec ma syntaxe ici? Comment puis-je obtenir le projet qui a le project_code spécifié et l'assigner à une variable?

Modifier

Ah, merci ok-. J'ai changé le nom de la variable, et a couru à nouveau la requête, attribuant ses résultats à la sixStokeList variable, ce

sixStokeList = Project.objects.filter(project_code = "6SPR") 
  • ce retourné deux articles, et après avoir imprimé les éléments du tableau à la console, à savoir sixStokeList[0] & sixStokeList[1], je sais que celui que je veux, donc j'ai assigné qu'un particulier à une variable:

    sixStoke = sixStokeList [1]

J'ai ensuite tapé sixStoke. et appuyé sur 'tab' dans la console pour voir ce qui est disponible pour cette variable. Je l'ai fait la même chose avec un autre projet, à savoir

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

La liste des options disponibles en fonction après avoir tapé variable + . + tab était différent pour chaque instance project, même si je les avais obtenu à la fois exactement de la même manière, ce qui m'indiquerait qu'ils ne sont pas des instances de la même classe ... comment cela peut-il être, étant donné que je les ai tous les deux en interrogeant la même classe?

+0

Il est juste que les variables ne peuvent pas commencer avec des chiffres en python –

+2

Vous ne pouvez pas nommer un début variable avec un nombre. Appelez le 'SixStoke', ou' Prj6Stoke', ou 'Stoke6' ou quelque chose. –

+0

le 6SPR (code du projet) est une chaîne? peut-être vous devriez utiliser comme ceci: '6Stoke = prjcts.get (project_code = '6SPR')' – Abiezer

Répondre

2

Vous ne pouvez pas nommer un début variable avec un nombre

+0

Ah, ok. Merci beaucoup. J'ai enlevé le nombre et j'ai pu assigner des instances de classe aux variables. J'ai assigné quelques instances à différentes variables en utilisant la même méthode 'filter()', en passant simplement une valeur différente pour le 'projet_code 'sur lequel je filtrais ... mais il semble que les instances des deux variables appartiennent à différentes classes étant donné les options qui leur sont disponibles sont différentes- comment cela pourrait-il être donné que je les ai tous les deux en interrogeant la même classe? J'ai mis à jour ma question pour inclure ce détail ... – someone2088