Это мой models.py:
Class User(AbstractBaseUser):
first_name = models.CharField(max_length=30, blank=True, null=True)
surname = models.CharField(max_length=30, blank=True, null=True)
def __str__(self):
return "%s %s" % (self.first_name, self.surname)
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
def __str__(self):
return f"{self.user}'s profile"
def full_name(self):
return f"{self.first_name} {self.surname}"
class Composition(models.Model):
title = models.CharField(max_length=120)
composer = models.ForeignKey(Profile, on_delete=models.CASCADE)
def __str__(self):
return f"{self.title} {self.composer.full_name}"
Не понимаю, почему я получаю Title <bound method Profile.full_name of <Profile: MyName's profile>>
в админке Django, в списке названий композиций. Позвонив по номеру self.composer.full_name()
, я получу только два элемента <bound method...>
. Кто-нибудь может мне помочь? Я уже некоторое время борюсь с этим и застрял.
PS:
нажатие на него возвращает:
TypeError at /admin/nms_app/composition/3/change/
__str__ returned non-string (type NoneType)
PS2:
добавление @property
не помогает.
Решение:
Благодаря Suh Fangmbeng я понял, что забыл «пользователя» в методе класса Profile :
def full_name(self):
return f"{self.user.first_name} {self.user.surname}"