【问题标题】:Reimplimenting QSqlRelationalTableModel - data Function Returning String Not Code重新实现 QSqlRelationalTableModel - 数据函数返回字符串而不是代码
【发布时间】:2014-07-27 00:03:03
【问题描述】:

我是 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 表,都带有关系,但即使没有关系,它也不起作用。任何人都可以看到出了什么问题?

【问题讨论】:

    标签: python mysql qt pyqt qsqltablemodel


    【解决方案1】:

    找到答案:

    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)已经映射到模型中的数据。

    【讨论】:

      【解决方案2】:

      尝试使用关系中的域

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

      有类似的问题,因为"id" 在两个表中

      【讨论】:

      • 您好 ngulam,感谢您的回复。该解决方案没有任何区别,但在 Python 2.7 中。即使没有关系,数据仍然没有返回,所以似乎更为什么 self.record(0).value("title").toString() 不起作用(它确实返回,但只有空格),但返回“字符串”确实有效。问候
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多