Django模型字段,如果为空,则返回可选值?
如果django模型字段有空值,是否有方法为该字段返回不同的设置值 我有配置文件图像(image_url)的用户,对于没有配置文件图像的用户,我希望返回默认的无化身url,而不是“无”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字段上
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存储在数据库中似乎违反了规则。