1

我是 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 打印。如果确实返回“字符串”,则填充所有项目。模型被实例化,预期的返回代码在模型的定义之外工作。尝试了多个其他 SQL 表,都带有关系,但即使没有关系,它也不起作用。谁能看到出了什么问题?

4

2 回答 2

0

尝试在关系中使用域

    self.setRelation(self.fieldIndex("type"), QSqlRelation("title_type", "title_type"."id", "title_type"."type"))         

有类似的问题,就像"id"在两个表中一样

于 2014-06-05T20:51:46.630 回答
0

找到了答案:

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-06T17:35:30.300 回答