2017-02-18 24 views
0

проблемы возникает при вставке QSqlRecord в QSqlTableModel с помощьюQSqlRecords, вставленный в модель пустой/пробел в QTableView

record = self.tablemodel.record() 
record.setValue('originfile_path', filepath) 
record.setValue('originfile_hash', filehash) 
record.setValue('image', img_pkl) 
record.setValue('area', area) 
self.tablemodel.insertRecord(-1, record) 

вставленной записи показывает вверх в QTableView, как пустая запись с восклицательным знаком. Он вставляется в базу данных - закрытие и повторное открытие приложения заставляет записи отображаться нормально.

Exclamation Point Records rows

ответ

0

Mark вы первичный ключ, сгенерированный в False, то в PyQt это делается с помощью:

record.setGenerated('tableid', False) 

Аналогичная проблема была там происходит из-за полного отсутствия первичного ключа:

https://forum.qt.io/topic/37023/solved-updating-qsqlrecord-during-qsqltablemodel-beforeupdate-causes-blank-row-in-qtableview/4

Соответствующий documentation:

QSqlTableModel :: setRecord

Вызывающий должен помнить, чтобы установить сгенерированный флаг FALSE для полей, где база данных предназначены для обеспечения значения, такие как автоматически увеличивается на единицу ID.

Эта проблема вызвана несоответствием между созданным SQLite PK и генерируемым QT PK.

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

  • Нет связанных вопросов^_^