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

时间:2019-03-29 00:58:18

标签: python django

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

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

例如,我想获得类似“ hilltop”之类的东西

2 个答案:

答案 0 :(得分:2)

+不应该是__str__,删除该修饰符将解决您的问题。

您正在将类(classmethod)作为Album而不是实例传递给__str__方法。有关详细信息,请参见this question

答案 1 :(得分:0)

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

此外,如果您尝试通过在self.artist的{​​{1}}方法中使用以下语法来将其连接,则CharFieldmodels.py

__str__()