我有这个模特:
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
字段。如果未将配置文件链接到用户,如何返回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 Malish接受的答案的稍微修改的版本:
def __str__(self):
return f"{self.user}'s profile" if self.user_id != None else f"{self.name}"
我有这个模型:类Profile(models.Model):user = models.OneToOneField(User,on_delete = models.CASCADE,related_name ='profile',null = True,blank = True)name = models.CharField(max_length = ...
def __str__(self):
if self.user:
return f"{self.user}'s profile"
else:
return f"{self.name}"