2

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

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

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

4 回答 4

4

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

@property
def image_url_with_default(self):
    return self.image_url or whatever_the_default_url_is
于 2013-10-27T21:00:01.447 回答
2

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

@property
def avatar(self):
    return self.image_url or settings.DEFAULT_AVATAR_URL
于 2013-10-27T21:13:40.887 回答
0

您是否尝试过使用URLField 上的默认选项?

你可以做类似的事情:

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

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

希望这可以帮助

于 2013-10-27T20:58:54.493 回答
0

哦,我的……用户输入的 URL……看起来很危险。

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 ”之类的东西来分析图像中的裸体。

于 2013-10-27T21:00:30.650 回答