获取模型对象时如何默认返回image.url?

我希望我的模型对象始终返回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

简而言之,我想要一些可以改变模型字段返回值的东西。


繁星coding
浏览 155回答 2
2回答

动漫人物

您可以像这样向模型添加属性,请注意我在字段名称中添加了下划线: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)

斯蒂芬大帝

使用__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"更新-1我想,@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)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python