欢迎光临!
若无相欠,怎会相见

Django: Unable to get repr for 解决方案

序言

之前写项目的时候遇到一个问题,卡了我几天,还好最终得以解决。问题如下:

Unable to get repr for <class ‘django.db.models.query.QuerySet’>

详情

我尝试使用WordPress的数据库进行一个Blog项目的编写,但是在渲染一篇文章的时候,一直有部分内容无法正常显示,调试的时候总会出现“Unable to get repr for <class ‘django.db.models.query.QuerySet’>”这个错误,查询没有任何返回。

使用WordPress数据库重新建立的models 类中的 __str__() 方法由于我不太熟悉,直接就返回了类的值,如下:

class TermRelationships(models.Model):
    object_id = models.BigIntegerField(primary_key=True)
    term_taxonomy_id = models.BigIntegerField()
    term_order = models.IntegerField()

    class Meta:
        db_table = 'wp_term_relationships'
        unique_together = (('object_id', 'term_taxonomy_id'),)

    def __str__(self):
        return self.object_id, self.term_taxonomy_id, self.term_order

就导致了上述的错误Unable to get repr for <class 'django.db.models.query.QuerySet'>

然后通过多方查找资料并阅读别人写好的blog源代码,并通过尝试,终于解决了这个问题,查询也是有结果了:

taxonomys =<QuerySet [<TermRelationships: 608, 98, 0>, <TermRelationships: 608, 101, 0>, <TermRelationships: 608, 102, 0>, <TermRelationships: 608, 103, 0>, <TermRelationships: 608, 104, 0>, <TermRelationships: 608, 105, 0>]>

方法很简单,就是把需要的字段通过字符串的方式返回,以上述为例:

class TermRelationships(models.Model):
    object_id = models.BigIntegerField(primary_key=True)
    term_taxonomy_id = models.BigIntegerField()
    term_order = models.IntegerField()

    class Meta:
        db_table = 'wp_term_relationships'
        unique_together = (('object_id', 'term_taxonomy_id'),)

    def __str__(self):
        return u"%s, %s, %s" % (self.object_id, self.term_taxonomy_id, self.term_order)

结语

会者不难,确实是这样的,但就是这个简单的问题,卡了我两三天。在这里记录一下,给自己一个警醒,能帮到需要的人那就更好了~

如有错误,敬请指出,感谢指正!    — 2019-08-27  21:33:00   于苏州

赞(0) 打赏
转载请注明:飘零博客 » Django: Unable to get repr for 解决方案
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

欢迎光临