我的Django项目有问题。
我会直接的。我将我的Django管理员连接到我在服务器上的数据库,问题是当在浏览器中访问模型时,会抛出以下错误:
TypeError at /admin/crm/asentamiento/78967/
__str__ returned non-string (type int)
Request Method: GET
Request URL: http://127.0.0.1:8080/admin/crm/asentamiento/78967/
Django Version: 1.8
Exception Type: TypeError
Exception Value:
__str__ returned non-string (type int)
Exception Location: C:\Spameando\crm_denue2\myvenv\lib\site-packages\django\utils\encoding.py in force_text, line 90
Python Executable: C:\Spameando\crm_denue2\myvenv\Scripts\python3.exe
Python Version: 3.4.4
我的模型的代码是这样的:
class Asentamiento(models.Model):
id_asentamiento = models.AutoField(primary_key=True)
nom_asentamiento = models.CharField(max_length=150)
tipo_centro = models.CharField(max_length=100)
nom_centro = models.CharField(max_length=100)
num_local = models.CharField(max_length=20)
tipo_asentamiento_id_tipo_asent = models.ForeignKey('TipoAsentamiento', db_column='tipo_asentamiento_id_tipo_asent')
codigo_postal_id_codpostal = models.ForeignKey('CodigoPostal', db_column='codigo_postal_id_codpostal')
localidad_id_localidad = models.ForeignKey('Localidad', db_column='localidad_id_localidad')
class Meta:
managed = False
db_table = 'asentamiento'
def __str__(self):
return self.nom_asentamiento
我不知道问题是什么,因为我已多次完成模型并且我总是抛出相同的错误,在所有其他表格和模型中我都没有问题。
当我点击模型的某个值以在窗口中查看所选值时,会发生错误。
答案 0 :(得分:3)
也许这会有所帮助,我最近遇到了类似的问题:
def __str__(self):
return 'Asentamiento: {} {} {} {} {} '.format(self.id_asentamiento, self.nom_asentamiento, self.tipo_centro, self.nom_centro, self.num_local)
我希望它适合你,问候
答案 1 :(得分:2)
只需将str()
放在此处:
def __str__(self):
return str(self.nom_asentamiento)
答案 2 :(得分:1)
我有VSCode
创建的默认代码,该代码返回了pk
。
已更改
def __str__(self):
return self.pk
收件人:
def __str__(self):
return self.title # title is the field from my model
答案 3 :(得分:0)
对我来说是因为我返回的是对象而不是字符串,所以我改变了
def __str__(self):
return self.user
到
def __str__(self):
return self.user.email
答案 4 :(得分:0)
我只是面对这个问题,我认为如果我们将 str()
放在 self.field
之前并不能解决我们的问题。即使我在运行迁移命令后注释掉了 __str__
方法,我也一次又一次地面临这个问题。
问题原因:-
主要问题在于您的其他模型与此模型有任何关系,而在该模型中,您照常执行 __str__
方法!
您应该在与您的模型具有多对通关系的模型之前检查 put str()
!
答案 5 :(得分:0)
我使用我们想要在管理面板中表示的字段。
将该字段放在字符串表示中,就我而言:
def__str__:
return self.user.username