为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

守着一只汪 2021-12-21 15:00:55
我正在尝试通过管理员保存模型,但我不断收到此错误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例如,我想得到像“山顶”这样的东西
查看完整描述

2 回答

?
UYOU

TA贡献1878条经验 获得超4个赞

__str__不应该是classmethod,删除该装饰器将解决您的问题。

您将类 ( Album)__str__作为self而不是实例传递给方法。有关详细信息,请参阅此问题


查看完整回答
反对 回复 2021-12-21
?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

您需要@classmethod从模型中删除装饰器,因为它不应该如此。

此外,self.artist就是 CharField如果试图通过在使用下面的语法来连接它models.py__str__()方法。

@classmethod
    def __str__(self):
            return "{0} {1}".format(self.album_name,self.artist)


查看完整回答
反对 回复 2021-12-21
  • 2 回答
  • 0 关注
  • 147 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号