Django模型字段,如果为空,则返回可选值?

Django模型字段,如果为空,则返回可选值?,django,Django,如果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) 您是否尝试过使用URL字段上

如果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)
您是否尝试过使用URL字段上的选项

你可以这样做:

image_url = models.URLField(max_length=2000, blank=True, null=True,  default='http://misyte.com/default-image.jpg')
还没有测试过。。。django上还有一个ImageField。。也许你也可以检查一下


希望这有帮助

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

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

哦,我的。。。用户输入的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'

如果你将图像存储在你的身边,你至少可以运行类似于“”的程序来分析裸体图像。

正如@paulo scardine所建议的,当你想要实际使用它时,只需添加一个条件——例如在模板中,或者如果它必须在多个地方使用,就像@remcogerlich)所建议的模型的方法/属性一样

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

你能给我们举个例子吗:-)@Pleasedontalley添加了一个默认值是否向数据库中插入了任何内容?嗯。。。URLField作为varchar存储在数据库中,但我不知道它是否会绕过URL验证器并存储“任何东西”。。如果你试一下,让我知道结果_n@itsquestiontime1:是,这会将默认url存储到数据库中。不是最优的(如果它改变了怎么办?)嗯,没错。。现在我发现将默认值存储在DB上是愚蠢的。。。最好在django模型上有一个“null_值”或类似的选项:)url是CDN上的一个路径,不必担心。在django中,您可以将MEDIA_url指向CDN,然后忘记它-将CDN url存储在数据库中似乎违反了规则。