首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django-imagekit获取模型属性

django-imagekit获取模型属性
EN

Stack Overflow用户
提问于 2015-01-12 08:21:26
回答 1查看 565关注 0票数 1

我有以下模式:

代码语言:javascript
复制
class PropertyPhoto(models.Model):
    property = models.ForeignKey('Property')
    photo_show = ProcessedImageField(upload_to=get_web_watermark,
                                  processors=[Watermark()],                                     
                                  options={'quality': 95})

以及定制的水印类:

代码语言:javascript
复制
class Watermark(object):    

    def process(self, image):
        try:
            this_property = Property.objects.get(pk=*self.property.id*)
        except Property.DoesNotExist:
            print "error"

如何从Watermark类中访问模型属性"property“?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-13 04:20:37

您需要创建一个自定义规范,从模型中获取所需的信息,并将其传递给您的处理器。文档显示一个例子

代码语言:javascript
复制
from django.db import models
from imagekit import ImageSpec, register
from imagekit.models import ImageSpecField
from imagekit.processors import ResizeToFill
from imagekit.utils import get_field_info

class AvatarThumbnail(ImageSpec):
    format = 'JPEG'
    options = {'quality': 60}

    @property
    def processors(self):
        model, field_name = get_field_info(self.source)
        return [ResizeToFill(model.thumbnail_width, thumbnail.avatar_height)]

register.generator('myapp:profile:avatar_thumbnail', AvatarThumbnail)

class Profile(models.Model):
    avatar = models.ImageField(upload_to='avatars')
    avatar_thumbnail = ImageSpecField(source='avatar',
                                      id='myapp:profile:avatar_thumbnail')
    thumbnail_width = models.PositiveIntegerField()
    thumbnail_height = models.PositiveIntegerField()

注意,您可以将规范直接传递给ImageSpecField构造函数(使用spec kwarg),而不是如上面所示使用id (并使用id kwarg)注册它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27897787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档