我希望我的模型对象始终返回字段图像的image.url
。
我的模特:
class Content(models.Model):
...
avatar = models.ImageField(upload_to=file, blank=True, null=True)
我想要类似的东西
class Content(models.Model):
...
def get_avatar(self): # some default func for returning fields
return self.avatar.url
它必须像这样工作,当我得到对象时:
content = Content.objects.get(pk=1)
print(content.avatar)
它应该打印路径:
/media/uploads/dsadsadsa.jpg
简而言之,我想要一些可以改变模型字段返回值的东西。
答案 0 :(得分:3)
您可以像这样向模型中添加属性,请注意,我在字段名称中添加了下划线:
class Content(models.Model):
...
_avatar = models.ImageField(upload_to=file, blank=True, null=True)
@property
def avatar(self):
return self._avatar.url
现在您可以这样做:
print(content.avatar)
答案 1 :(得分:0)
使用__str__()
方法
class Content(models.Model):
...
avatar = models.ImageField(upload_to=file, blank=True, null=True)
def __str__(self):
try:
return self.avatar.url
except AttributeError: # "self.avatar" may be None
return "no avatar"
我认为 @propert
可能适合您
class Content(models.Model):
...
avatar = models.ImageField(upload_to=file, blank=True, null=True)
@property
def avatar_url(self):
try:
return self.avatar.url
except AttributeError: # "self.avatar" may be None
return "no avatar"
现在,您可以按以下方式访问网址,
print(content.avatar_url)