django ManyToMany Image字段具有不同的默认图像

时间:2019-04-20 11:01:23

标签: python django model

我有一些具有Image属性的模型。最近,我需要将多个图像应用于一个属性,因此我决定建立自己的模型,其中包括图像字段并通过ManyToMany \ OneToMany \ OneToOne关系与之相关。

我的一些用例是:

个人资料应该只有一个用户图片

帖子应具有OneToMany图片字段

我创建了以下图像模型:

from django.db import models
from PIL import Image


class PandaImage(models.Model):

    def save(self, *args, **kwargs):
        default_image_path = kwargs.get('image_path', 'appicon.png')
        self.image = models.ImageField(default=default_image_path, upload_to='profile_pics')

        img = Image.open(self.image.path)
        if img.height > 300 or img.width > 300:
            output_size = (300, 300)
            img.thumbnail(output_size)
            img.save(self.image.path)

        super(PandaImage, self).save(*args, **kwargs)

我的问题是如何将每个模型的不同params \ default图像传递到图像模型?

例如,我希望个人资料的默认图片与帖子的默认图片不同。稍后,我可能要更改个人资料图片的大小,但不允许发布信息的大小,等等。

我尝试在Image模型中的 init 方法中添加路径参数,但是在将其分配给属性时,我没有找到将参数传递给该类的方法。

例如:

image = models.OneToOneField(MyImage, related_name='image', some_default_init_param='default.pnd')

为我提供了错误信息,并没有将那个kwarg传递给MyImage模型。

正确的方法是什么?

0 个答案:

没有答案