Am子类QSqlRelationalTableModel.
class Titles(QSqlRelationalTableModel):
def __init__(self):
QSqlRelationalTableModel.__init__(self)
self.setTable("titles")
self.setRelation(self.fieldIndex("type"), QSqlRelation("title_type", "id", "type"))
self.select()
print self.record(0).value("title").toString() # 1
def data(self, i, role):
if role == Qt.DisplayRole:
print self.record(0).value("title").toString() # 2
return self.record(0).value("title").toString() # 3
titles = Titles()
print iswcTitlesModel.record(0).value("title").toString() # 4所有上述打印空格(它返回正确的行数,但仅作为空白)。如果删除数据函数,请打印#1和#4。如果执行返回"string",则将填充所有项。模型被实例化,并且预期的返回代码在模型定义之外工作。尝试了多个其他SQL表,所有这些表都有一个关系,但是即使没有关系,它也不能工作。有人能看到出什么问题了吗?
发布于 2014-06-06 17:35:30
找到了答案:
def data(self, i, role):
if role == Qt.DisplayRole:
if i.column() == 1:
return QVariant("col 1 custom data")
else:
return super(QSqlTableModel, self).data(i, role)因此,如果i.column() ==所需的列,则显示所需的任何内容。否则,返回超类(QSqlTableModel)已经映射到模型中的数据。
发布于 2014-06-05 20:51:46
尝试在关系中使用域
self.setRelation(self.fieldIndex("type"), QSqlRelation("title_type", "title_type"."id", "title_type"."type")) 有类似的问题,因为两个表中都有"id"。
https://stackoverflow.com/questions/24069603
复制相似问题