Django中def___str____(self)中的条件
我有这个模型:Django中def___str____(self)中的条件,django,django-models,Django,Django Models,我有这个模型: 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都可以为空。这是因为配置文件可能链接到用
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
都可以为空。这是因为配置文件可能链接到用户或不链接到用户。如果不是,则只提供名称
字段。如果配置文件未链接到用户,如何返回name
,如果是,如何返回user.name
属性?这:
def __str__(self):
return
if self.user:
f"{self.user}'s profile"
else:
self.name
返回一个\uuuu str\uuuuuuu返回的非字符串(类型NoneType)
错误
解决方案
最后,我使用了@Max Malysh接受答案的稍加修改的版本:
def __str__(self):
return f"{self.user}'s profile" if self.user_id != None else f"{self.name}"
或
def __str__(self):
if self.user:
return f"{self.user}'s profile"
else:
return f"{self.name}"
def __str__(self):
return f"{self.user}'s profile" if self.user else f"{self.name}"