неподдерживаемые типы операндов для +: 'DeferredAttribute' и 'str' - PullRequest
2 голосов
/ 29 марта 2019

Я пытаюсь сохранить модель через администратора, но получаю эту ошибку

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 ]

2 голосов
/ 29 марта 2019

__str__ не должно быть classmethod, удаление этого декоратора решит вашу проблему.

Вы передаете класс (Album) методу __str__ как self вместо экземпляра. См. этот вопрос для деталей.

0 голосов
/ 29 марта 2019

Вам нужно удалить @classmethod декоратор из вашей модели, потому что это не должно быть.

Кроме того, self.artist равно CharField, если вы попытаетесь объединить его, используя приведенный ниже синтаксис в методе models.py __str__().

@classmethod
    def __str__(self):
        return "{0} {1}".format(self.album_name,self.artist)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...