猿问

+ 不支持的操作数类型:“DeferredAttribute”和“str”

我正在尝试通过管理员保存模型,但我不断收到此错误


unsupported operand type(s) for +: 'DeferredAttribute' and 'str'".

我想返回模型的字符串表示。


这是我尝试过的:


def __str__(self):

    return str(self.album_name + "" + self.artist)

我的型号:


class Album(models.Model):

    album_name = models.CharField(max_length=250,)

    album_logo = models.FilePathField(path='music/static/music/song_logo', 

    null=True, blank=True, recursive=True)

    artist = models.CharField(max_length=150)

    primaryid = models.AutoField(primary_key=True, null=False)


    @classmethod

    def __str__(self):

        return self.album_name + " " + self.artist

例如,我想得到像“山顶”这样的东西


守着一只汪
浏览 148回答 2
2回答

UYOU

__str__不应该是classmethod,删除该装饰器将解决您的问题。您将类 ( Album)__str__作为self而不是实例传递给方法。有关详细信息,请参阅此问题。

明月笑刀无情

您需要@classmethod从模型中删除装饰器,因为它不应该如此。此外,self.artist就是 CharField如果试图通过在使用下面的语法来连接它models.py的__str__()方法。@classmethod     def __str__(self):             return "{0} {1}".format(self.album_name,self.artist)
随时随地看视频慕课网APP

相关分类

Python
我要回答