簡體   English   中英

“__str__ 返回非字符串(int 類型)”錯誤

[英]Error with "__str__ returned non-string (type int)"

我有一個 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

我不知道問題是什么,因為我做了很多次模型並且我總是拋出同樣的錯誤,在所有其他表和模型中我沒有問題。

當我單擊模型的某個值以在窗口中查看所選值時,會發生錯誤。

只需將str()放在這里:

def __str__(self):
       return str(self.nom_asentamiento)

也許這會有所幫助,我最近遇到了類似的問題:

def __str__(self):
   return 'Asentamiento: {} {} {} {} {} '.format(self.id_asentamiento, self.nom_asentamiento, self.tipo_centro, self.nom_centro, self.num_local)

我希望它對你有用,問候

我有由VSCode創建的默認代碼,它返回pk

改變了

  def __str__(self):
      return self.pk

到:

  def __str__(self):
      return self.title # title is the field from my model

由於Asentamiento模型的返回類型,在這里您不會收到此錯誤。 它返回 CharField 而不是 Integer 類型(如錯誤消息中所述。)

錯誤可能是由於TipoAsentamientoCodigoPostalLocalidad模型的返回類型造成的。 由於這些模型與Asentamiento模型具有一對多關系

如果您不確定這些模型的返回類型,那么您需要在模型中添加__str__()方法並返回一個 CharField 或任何其他非整數字段。

例如,如果你想返回一個PositiveIntegerField

def __str__(self):
   return str(self.positive_integer_field_name)
# here, you need to use the str() method to convert the return type into a string. 

如果你想返回一個非整數字段,

def __str__(self):
   return self.non_integer_field_name

對我來說是因為我返回的是對象而不是字符串,所以我改變了

 def __str__(self):
    return self.user

 def __str__(self):
    return self.user.email

我只是面對這個問題,我認為如果我們將str()放在self.field之前將無法解決我們的問題。 即使我在運行遷移命令后注釋掉了__str__方法,我也一次又一次地面臨這個問題。

問題原因:-

主要問題是您的其他模型與該模型有任何關系,並且在該模型中,您照常執行__str__方法!

您應該在與您的模型具有 Manytoone 關系的模型之前檢查 put str()

我使用我們想要在我們的管理面板中表示的字段。
將該字段放在字符串表示中,在我的情況下:

def__str__:
  return self.user.username

由於您的外鍵之一,可能會出現此問題。 如果其中之一(外鍵字段)返回models.IntegerField()。 發生在我身上,我不得不確保外鍵也返回 models.Charfield() 類型

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM