如果该字段的空值为空,是否有办法为django模型字段返回不同的设定值?
我的用户拥有个人资料图片(image_url),对于没有个人的用户,我想要返回默认的无头像网址,而不是“无”。
class User(models.Model):
name = models.CharField(max_length=800)
image_url = models.URLField(max_length=2000, blank=True, null=True)
答案 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”的内容,以便分析图像的裸露。