Django查询Sqlite3的Datatable模型时触发线程异常该如何解决?
错误根因
Datatable模型的__str__方法违反了Django的规则:该方法必须返回字符串类型,但你当前代码返回的是(self.date_d, self.classes)元组。当打印Datatable.objects.all()查询集时,Django会调用每个实例的__str__方法做输出格式化,类型不匹配直接触发异常。
修复方案
修改Datatable的__str__方法,让它返回字符串即可,以下是两种常用实现:
- 拼接两个字段作为返回值:
class Datatable(models.Model): classes = models.CharField(max_length = 254) date_d = models.DateField() def __str__(self): # 用f-string拼接两个字段为字符串,你也可以用+或者format方法按需调整格式 return f"{self.date_d} | {self.classes}"
- 只返回单个字段作为展示值:
def __str__(self): return self.classes
后续操作
修改完成后不需要执行数据库迁移(仅修改模型方法没有变更字段结构),直接重启Django服务再运行代码即可恢复正常。
内容的提问来源于stack exchange,提问作者Vishak Raj
相关产品推荐
相关产品推荐

