J'essaie de comprendre l'avantage d'utiliser QSqlRelationalTableModel par rapport à QSqlTableModel lorsque je traite des tables liées par des ID uniques. Dans l'exemple suivant, le champ d'organisation est correctement affiché par nom et non par numéro d'ID. Toutefois, comment accéder aux champs "size" ou "address" correspondants de l'enregistrement lié?Obtenir des valeurs dans une ou plusieurs tables jointes à l'aide de PySide
from PySide.QtCore import *
from PySide.QtGui import *
from PySide.QtSql import *
db = QSqlDatabase.addDatabase("QSQLITE")
db.setDatabaseName("relational_test_01.sqlite")
db.open()
q = QSqlQuery()
q.exec_("CREATE TABLE people(id INTEGER PRIMARY KEY, first VARCHAR(50), last VARCHAR(50), organization INTEGER)")
q.exec_("INSERT INTO people VALUES(1,'John', 'Smith', 1)")
q.exec_("INSERT INTO people VALUES(2,'Bob', 'Jones', 2)")
q.exec_("CREATE TABLE organizations(id INTEGER PRIMARY KEY, name VARCHAR(50), size INTEGER, address VARCHAR(50))")
q.exec_("INSERT INTO organizations VALUES(1,'Central Gym', 30, '400 Central Street')")
q.exec_("INSERT INTO organizations VALUES(2,'Shoe Store', 5, '200 Central Street')")
db.close()
model = QSqlRelationalTableModel()
model.setTable("people")
model.setRelation(3, QSqlRelation("organizations", "id", "name"))
model.setFilter("people.id = 1")
model.select()
count = model.rowCount()
if count == 1:
record = model.record(0)
org = record.value(3)
print(org)
Merci. Bien que la fonctionnalité "relTblAl_3" soit documentée, elle semble obscure. Peu importe, je suis content que ça existe. Vous avez répondu à chacune de mes questions PySide au cours des dernières semaines. Existe-t-il un moyen de vous contacter directement en ce qui concerne un projet? – davideps
@davideps. Je suis content que vous ayez trouvé mes réponses utiles. Pour le moment, je crains de ne pouvoir m'engager dans aucun autre projet, car j'ai déjà d'autres engagements. Je vais toujours regarder toutes les questions relatives pyqt/pyside qui sont affichées ici, cependant. Je ne peux pas promettre que je serai toujours capable d'y répondre - mais je ferai au moins un commentaire si je pense avoir quelque chose d'utile à ajouter. – ekhumoro
Je comprends. Les gens talentueux sont souvent occupés :) Je suis nouveau à la fois Python et Qt et je suis à la recherche de conseils d'application générale (conseil) et une formation formelle à l'utilisation de PySide ou, mieux encore, PySide2. J'ai parcouru plusieurs des tutoriels disponibles en ligne, mais l'approche semble fragmentaire. La compagnie Qt ne semble pas offrir de formation PySide pour le moment et il n'y a pas de livres récents sur le sujet. Avez-vous des conseils? Est-ce que ma seule option pour apprendre Python par lui-même et lutter à travers le C++ et les anciennes pages de manuel PySide pour Qt? – davideps