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
Reference
この問題について(Django) __str__ returned non-string (type Publication)), 我々は、より多くの情報をここで見つけました https://velog.io/@sandartchip/Django-str-returned-non-string-typeテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol