簡體   English   中英

TypeError __str__ 返回非字符串(int 類型)

[英]TypeError __str__ returned non-string (type int)

我正在嘗試編寫一個劇本應用程序,但是當我實際將信息添加到我的 model 時遇到了問題。 我的模型如下所示:

class Screenplay(models.Model):
    uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    title = models.CharField(max_length=100)
   
    def __str__(self):
        return self.title

class Block(models.Model):
    class BlockTypes(models.IntegerChoices):
        HEADING = 1, 'HEADING'
        DESCRIPTION = 2, 'DESCRIPTION'
        CHARACTER = 3, 'CHARACTER'
        DIALOGUE = 4, 'DIALOGUE' 

    uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    text = models.TextField()
    type = models.PositiveSmallIntegerField(
        choices=BlockTypes.choices,
        default=BlockTypes.HEADING
    )
    screenplay = models.ForeignKey(Screenplay, on_delete=models.CASCADE, related_name='blocks')
    
    def __str__(self):
        return self.type

當我從 go 到我的后端 api (localhost:8000/api/screenplays) 我看到我的示例劇本類似於這樣:

HTTP 200 OK
Allow: GET, POST, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

[
    {
        "uuid": "SAMPLE - UUID",
        "title": "SAMPLE - TITLE",
        "blocks": []
    },
]

當我實際向劇本添加一個塊時,我在標題中發布的錯誤會彈出。 在我的 api 中,它看起來像"blocks": []但是當我將一個塊發布到某個劇本時,它會中斷。 我只是不明白問題到底是什么,如果它在我的 models.py 中或在我的 django 應用程序的其他部分中。 我需要在我的劇本 model 中添加塊嗎? 無論如何,在這一點上,任何建議都會很棒。

__str__必須返回string ,並且您正在返回 integer 即PositiveSmallIntegerField 將該值轉換為Block model 中的string

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

有關str [Django-doc] 的更多詳細信息

暫無
暫無

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

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