我有一些具有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模型。
正确的方法是什么?