如何修复 Python Django TypeError
How to fix Python Django TypeError
我有一个简单的模型 class,我想 return 我的 Django Admin 中一个字段的值。
来自终端的错误日志
TypeError: __str__ returned non-string (type NoneType)
models.py
class Solution(models.Model):
description = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
user = models.ForeignKey(User, on_delete=models.CASCADE)
error = models.ForeignKey(Error, on_delete=models.CASCADE)
def __str__(self):
return self.error + " fixed by " + self.user
我已经找到解决办法了。将解决方案模型 Class 替换为以下代码片段将修复错误。
models.py
class Solution(models.Model):
description = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
user = models.ForeignKey(User, on_delete=models.CASCADE)
error = models.ForeignKey(Error, on_delete=models.CASCADE)
def __str__(self):
return "Solution for " + str(self.error) + " by " + str(self.user)
通常最好使用 string formatting [pep-498] or literal string interpolation [pep-498],因为这是一个更强大的工具,会自动调用 str(…)
。最后它也更具可读性:
class Solution(models.Model):
description = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
user = models.ForeignKey(User, on_delete=models.CASCADE)
error = models.ForeignKey(Error, on_delete=models.CASCADE)
def __str__(self):
return <b>f'</b>{self.error} fixed by {self.user}<b>'</b>
我有一个简单的模型 class,我想 return 我的 Django Admin 中一个字段的值。
来自终端的错误日志
TypeError: __str__ returned non-string (type NoneType)
models.py
class Solution(models.Model):
description = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
user = models.ForeignKey(User, on_delete=models.CASCADE)
error = models.ForeignKey(Error, on_delete=models.CASCADE)
def __str__(self):
return self.error + " fixed by " + self.user
我已经找到解决办法了。将解决方案模型 Class 替换为以下代码片段将修复错误。
models.py
class Solution(models.Model):
description = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
user = models.ForeignKey(User, on_delete=models.CASCADE)
error = models.ForeignKey(Error, on_delete=models.CASCADE)
def __str__(self):
return "Solution for " + str(self.error) + " by " + str(self.user)
通常最好使用 string formatting [pep-498] or literal string interpolation [pep-498],因为这是一个更强大的工具,会自动调用 str(…)
。最后它也更具可读性:
class Solution(models.Model):
description = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
user = models.ForeignKey(User, on_delete=models.CASCADE)
error = models.ForeignKey(Error, on_delete=models.CASCADE)
def __str__(self):
return <b>f'</b>{self.error} fixed by {self.user}<b>'</b>