Django) __str__ returned non-string (type Publication)

5817 ワード


class Publication(models.Model):
        title = models.TextField(max_length=500, blank=False)
        publisher = models.ForeignKey(Publisher, blank=False, null=True,
        on_delete=models.SET_NULL)

		...

        def __str__(self):
                return self.title


class MemberPublication(models.Model):
        member = models.ForeignKey(Member, on_delete=models.CASCADE)
        publication = models.ForeignKey(Publication, on_delete=models.CASCADE)
        main_or_co_author = models.TextField(max_length=2, blank=True)
        video_link = models.TextField(max_length=50, blank=True)

        def __str__(self):
                return (self.publication)

        class Meta:
                db_table = 'main_member_publication'

私の考え


->MemberPublicationオブジェクトを呼び出す->__str__->MemberPublication.publication->publicationオブジェクトを出力すると、パブリッシュオブジェクトの__str__関数->MemberPublicationが呼び出されます.publication.title=>自分のtitleを印刷すると思います.

実際


->MemberPublicationオブジェクトを呼び出す->__str__->出版物を呼び出す方法__str__.
String型でない場合がございます

の原因となる


Pythonバージョンでレコーダを実行しているからです.__str__はPublicationの1つの方法です
Unicodeタイプです...-韓国語:

解決する


したがって、MemberPublicationがadminページからロードしたときに出力する値self.出版物のstringに変換する必要があります.
class Publication(models.Model):
        ...

        def __str__(self):
             return str(self.title)
戻り値をstring typeに変更します.つまり、修復されました.
stringでtype castingしないと戻るタイプがPublication