2013-01-22 4 views
0

Je travaille sur une application dans laquelle les utilisateurs peuvent saisir des demandes de travail, puis entrer et rechercher des demandes. Le problème que je rencontre est la construction de l'écran de résumé des demandes. Fondamentalement, il répertorie les résultats d'une requête de recherche. L'extrait du modèle est en tant que tel:Interrogation d'un seul champ dans un modèle Jinja2

 {% for req in workrequests %} 
      {{ req.id }} {{ req.customer }} {{ req.dateEntered }} {{ req.Contact }} 
     {% endfor %} 

Voici où je suis accroché. Les champs req.customer et req.Contact ne sont que des clés pour les bases de données client et contact. Je veux afficher le nom du client et le nom du contact. Je suppose que les requêtes suivantes devraient faire l'affaire:

 Customer.query.filter_by(req.customer).one() 
     Contact.query.filter_by(req.Contact).one() 

Le problème est, qui retournera l'enregistrement entier. Je suis juste après le champ de nom de ces deux tables à mettre dans mon modèle, qui est où le problème est. Je ne sais pas comment procéder avec cela

Répondre

1

Customer.query est une forme abrégée de db.session.query(Customer). Utilisez cette dernière pour interroger des colonnes spécifiques:

db.session.query(Customer.name).filter_by(id=req.customer).one() 

Bien que je pense que ce que vous voulez vraiment est une seule requête qui obtient toutes les données à la fois. Quelque chose comme:

db.session.query(
    WorkRequest.id, 
    WorkRequest.dateEntered, 
    Customer.name, 
    Contact.name 
).join(
    Customer, 
    Contact 
).filter(...) 
+0

Merci pour cela. J'ai oublié que je pourrais me retourner et utiliser la db.session elle-même. – Xanny

Questions connexes