Django模型字段,如果为null,则替代值返回?

时间:2013-10-27 20:48:28

标签: django

如果该字段的空值为空,是否有办法为django模型字段返回不同的设定值?

我的用户拥有个人资料图片(image_url),对于没有个人的用户,我想要返回默认的无头像网址,而不是“无”。

class User(models.Model):
    name = models.CharField(max_length=800)
    image_url = models.URLField(max_length=2000, blank=True, null=True)

4 个答案:

答案 0 :(得分:4)

最简单的方法是只为模型添加一个额外的属性:

@property
def image_url_with_default(self):
    return self.image_url or whatever_the_default_url_is

答案 1 :(得分:2)

正如@ paulo-scardine建议的那样,只需添加条件就可以实际使用它 - 即在模板中,或者如果它必须在多个地方使用,作为模型的方法/属性(如@remcogerlich)建议。

@property
def avatar(self):
    return self.image_url or settings.DEFAULT_AVATAR_URL

答案 2 :(得分:0)

您是否尝试过在URLField上使用default选项?

你可以这样做:

image_url = models.URLField(max_length=2000, blank=True, null=True,  default='http://misyte.com/default-image.jpg')

还没有测试过......在django上还有一个ImageField ..也许你也可以检查一下

希望这有帮助

答案 3 :(得分:0)

哦,我的......用户输入的网址......看起来很危险。

class User(models.Model):
    name = models.CharField(max_length=800)
    image = models.ImageField(upload_to='avatars', blank=True, null=True)

    def avatar(self):
        if self.image: return self.image.url
        return '/path/to/default/avatar.png'

如果您将图像存储在身边,您至少可以运行类似“nude”的内容,以便分析图像的裸露。