django - 错误:__str__ 返回非字符串(类型 DetComponente)/
问题描述
万岁开发者。我在模板渲染期间遇到了这个错误。我尝试了多种资源来查找错误,但无法解决它。我想要一些关于走哪条路的帮助。谢谢
TypeError at /form_mat/
__str__ returned non-string (type DetComponente)
Request Method: GET
Request URL: http://127.0.0.1:8000/form_mat/
Django Version: 3.2
Exception Type: TypeError
Exception Value:
__str__ returned non-string (type DetComponente)
Exception Location: C:\webcq\venv\lib\site-packages\django\forms\models.py, line 1253, in label_from_instance
Python Executable: C:\webcq\venv\Scripts\python.exe
Python Version: 3.8.6
楷模
class DetComponente(models.Model):
componentes = models.CharField (max_length=50, null=True)
def __str__(self):
return self.componentes
class Componente(models.Model):
componentes = models.ForeignKey (DetComponente, on_delete=models.CASCADE)
descricao = models.CharField (max_length=50)
def __str__(self):
return self.componentes
class EspecComponentes (models.Model):
componentes = models.ForeignKey (Componente, on_delete=models.CASCADE)
codigo = models.ForeignKey (Codigo, on_delete=models.CASCADE)
espec_material = models.ForeignKey (EspecMaterial, on_delete=models.CASCADE)
diametro1 = models.FloatField (blank=True)
diametro2 = models.FloatField (blank=True)
peso = models.FloatField (null=True, blank=True)
class Meta:
ordering = ['componentes']
def __str__(self):
return str (self.componentes)
意见
def view_mat(request, pk):
data = {}
data['db'] = EspecComponentes.objects.get(pk=pk)
return render(request, 'materiais/view.html', data)
解决方案
该__str__
方法必须返回str type
value 但DetComponente
正在返回NoneType
。您可以检查是否DetComponente.componentes
为 None 并在这种情况下返回默认字符串或空字符串。
class DetComponente(models.Model):
componentes = models.CharField (max_length=50, null=True)
def __str__(self):
return self.componentes or ""
推荐阅读
- java - 在 HessianProxyFactory 中长时间等待响应后出现 SocketException
- java - 带有进度条的 Android countDownTimer。无法设置进度
- json - 从嵌套 JSON 中提取特定值
- amazon-web-services - CloudFormation 是我项目架构的一部分吗?
- python - 使用 openpyxl.load_workbook() 函数时的错误消息
- angular - 为什么我收到商店对象而不是我自己的对象(PizzaState)?
- c++ - 通过输入创建 C++ 对象
- typescript - Typescript:如何在 NodeJS 中扩展全局对象?
- c# - 如何检测主线程何时完成执行
- javascript - 两个vue组件共享实例