Django自定义--model字段

自定义字段

  • model字段就是在处理python对象/数据库值/查询值之间的转换
  • to_python() 被下面的代替,兼容考虑也要使用
  • from_db_value() 从数据库加载数据转为python对象
  • get_prep_value() 将python对象转为查询值
  • get_db_prep_value() 将查询值转为数据库值
  • pre_save() 保存前预处理
  • get_prep_lookup() 准备用于数据库查找的值
  • 通常定义前3个方法

    下面是比较特殊的图片字段
def _add_thumb(s):
        parts = s.split(".")
        parts.insert(-1, 'thumb')
        if parts[-1].lower() not in ['jpeg', 'jpg']:
            parts[-1] = 'jpg'
        return '.'.join(parts)
    class ThumbnailImageFieldFile(ImageFieldFile):
            def _get_thumb_path(self):
               return _add_thumb(self.path)
            thumb_path = property(_get_thumb_path)

        def _get_thumb_url(self):
            return _add_thumb(self.url)
        thumb_url = property(_get_thumb_url)
       
        def save(self, name, content, save=True):
            super(ThumbnailImageFieldFile, self).save(name, content, save)
            img = Image.open(self.path)
            img.thumbnail(
                (self.field.thumb_width, self.field.thumb_height),
                Image.ANTIALIAS
            )
            img.save(self.thumb_path, "JPEG")

        def delete(self, save=True):
           if os.path.exists(self.thumb_path):
                os.remove(self.thumb_path)
            super(ThumbnailImageFieldFile, self).delete(save)
class ThumbnailImageField(ImageField):

    attr_class = ThumbnailImageFieldFile

    def __init__(self, thumb_width=128, thumb_height=128, *args, **kwargs):
        self.thumb_width = thumb_width
        self.thumb_height = thumb_height
        super(ThumbnailImageField, self).__init__(*args, **kwargs)

转载于:https://www.cnblogs.com/wj5633/p/7083171.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值