如果该字段具有空值,是否有办法为 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)
如果该字段具有空值,是否有办法为 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)
最简单的方法是在模型中添加一个额外的属性:
@property
def image_url_with_default(self):
return self.image_url or whatever_the_default_url_is
正如@paulo-scardine 建议的那样,只需在您想要实际使用它时添加一个条件 - 即在模板中,或者如果它一定要在多个地方使用,作为模型的方法/属性(如@remcogerlich)建议。
@property
def avatar(self):
return self.image_url or settings.DEFAULT_AVATAR_URL
您是否尝试过使用URLField 上的默认选项?
你可以做类似的事情:
image_url = models.URLField(max_length=2000, blank=True, null=True, default='http://misyte.com/default-image.jpg')
还没有测试过......在django上还有一个ImageField ..也许你也可以检查一下
希望这可以帮助
哦,我的……用户输入的 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 ”之类的东西来分析图像中的裸体。