如何在Django imagekit中指定字段定义之外的图像规格?

如何在Django imagekit中指定字段定义之外的图像规格?,django,django-imagekit,Django,Django Imagekit,我有以下模型定义: class Photo(models.Model) : def get_gallery_path(self, filename): ext = filename.split('.')[-1] filename = "%s.%s" % (uuid.uuid4(), ext) return 'static/uploads/images/gallery/' + filename uploader = models.F

我有以下模型定义:

class Photo(models.Model) :
    def get_gallery_path(self, filename):
        ext = filename.split('.')[-1]
        filename = "%s.%s" % (uuid.uuid4(), ext)
        return 'static/uploads/images/gallery/' + filename

    uploader = models.ForeignKey(User, on_delete=models.CASCADE)
    date = models.DateField(default=date.today)
    image = ProcessedImageField(default='', verbose_name='Image', upload_to=get_gallery_path, processors=[ResizeToFill(100, 50)], format='JPEG', options={'quality': 60})
    caption = models.CharField(max_length=200, null=True, blank=True)

    def __str__(self):
        return str(self.id) + str(self.uploader.username) + str(self.date)

    class Meta:
        verbose_name_plural = "Photos"
        verbose_name = "Photo"
我使用django imagekit修改上传的图像。但正如您所看到的,我必须在
image
字段中内联声明所有属性和选项。当我指定许多属性时,这使得代码很难阅读


是否有一种方法可以在
models.py
文件中分别定义属性和选项,以便我可以将其用于所有图像字段。

您只需利用字典解包即可

例如,定义字典
已处理的\u图像\u字段\u规格

def get_gallery_path(filename):
  ext = filename.split('.')[-1]
  filename = "%s.%s" % (uuid.uuid4(), ext)
  return 'static/uploads/images/gallery/' + filename

processed_image_field_specs = {
  'default': '', 
  'verbose_name': 'Image', 
  'upload_to': get_gallery_path, 
  'processors': [ResizeToFill(100, 50)], 
  'format': 'JPEG', 
  'options': {'quality': 60}
}
现在打开字典,为
ProcessedImageField
提供命名参数:

class Photo(models.Model) :
    ...
    image = ProcessedImageField(**processed_image_field_specs)
    ...

如果有人能告诉我一种在不影响图像质量的情况下压缩图像的方法,那将是一个很大的帮助。简单有效:)