在Django中def __str __(self)中的条件

问题描述 投票:-1回答:1

我有这个模特:

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)

如您所见,username都可以为空。这是因为配置文件可能链接到用户,也可能未链接到用户。如果不是,则仅提供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 = ...

django django-models
1个回答
2
投票
def __str__(self):
    if self.user:
        return f"{self.user}'s profile"
    else:
        return f"{self.name}"
© www.soinside.com 2019 - 2024. All rights reserved.