У меня есть QTableView с меню для добавления и редактирования записей. Модель подготовлена с помощью QSqlQueryModel, так как она показывает также связанные данные (суммы суммы) для записей.
После выполнения действий я хочу обновить sh таблицу. Я не понимаю, почему для действия редактирования достаточно сделать model.query().exec_()
, чтобы увидеть обновление, но для нового действия мне нужно дополнительно сделать model.setQuery(model.query())
, чтобы увидеть вновь вставленные строки.
def build_model(self):
self.model = QSqlQueryModel()
self.model.setQuery("SELECT b.id, b.name, SUM(coalesce(s.amount, 0.00)) as amount\
FROM budget AS b\
LEFT OUTER JOIN transaction_split as s ON s.id_budget = b.id\
GROUP BY b.id\
ORDER BY name")
self.table.setModel(self.model)
def act_new(self):
dlg = BudgetEd()
dlg.dialog.exec()
self.model.query().exec_()
self.model.setQuery(self.model.query()) # Why I need to this? to refresh the view
def act_ed(self):
# ... retrieve id_
dlg = BudgetEd(id_)
dlg.dialog.exec()
self.model.query().exec_() # or why this works without setting the query in the model again?