如何在获取模型对象时默认return image.url?
How to defaultly return image.url when we get model Object?
我希望我的模型对象总是 return 场图像的 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
简而言之,我想要一些可以改变模型字段 return 的东西。
使用__str__()
方法
class Content(models.Model):
...
avatar = models.ImageField(upload_to=file, blank=True, null=True)
<b>def __str__(self):
try:
return self.avatar.url
except AttributeError: # "self.avatar" may be None
return "no avatar"</b>
UPDATE-1
我想,@propert
可能适合你
class Content(models.Model):
...
avatar = models.ImageField(upload_to=file, blank=True, null=True)
<b>@property
def avatar_url(self):
try:
return self.avatar.url
except AttributeError: # "self.avatar" may be None
return "no avatar"</b>
现在,您可以访问 url 作为,
print(content.avatar_url)
您可以像这样向您的模型添加一个 属性,注意我在字段名称中添加了一个下划线:
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)
我希望我的模型对象总是 return 场图像的 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
简而言之,我想要一些可以改变模型字段 return 的东西。
使用__str__()
方法
class Content(models.Model):
...
avatar = models.ImageField(upload_to=file, blank=True, null=True)
<b>def __str__(self):
try:
return self.avatar.url
except AttributeError: # "self.avatar" may be None
return "no avatar"</b>
UPDATE-1
我想,@propert
可能适合你
class Content(models.Model):
...
avatar = models.ImageField(upload_to=file, blank=True, null=True)
<b>@property
def avatar_url(self):
try:
return self.avatar.url
except AttributeError: # "self.avatar" may be None
return "no avatar"</b>
现在,您可以访问 url 作为,
print(content.avatar_url)
您可以像这样向您的模型添加一个 属性,注意我在字段名称中添加了一个下划线:
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)