У меня есть эта модель:
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile', null=True, blank=True)
name = models.CharField(max_length=120, null=True, blank=True)
Как видите, и user
, и name
допускают значение NULL. Это связано с тем, что профиль может быть связан с пользователем или нет. Если нет, то предоставляется только поле name
. Как я могу вернуть name
, если профиль не связан с пользователем, и свойства user.name
, если это так? Это:
def __str__(self):
return
if self.user:
f"{self.user}'s profile"
else:
self.name
возвращает ошибку __str__ returned non-string (type NoneType)
.
Решение
В итоге я использовал немного измененную версию @ Принятый ответ Max Maly sh:
def __str__(self):
return f"{self.user}'s profile" if self.user_id != None else f"{self.name}"