У меня есть несколько моделей с атрибутом 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)
Мой вопрос: как я могу передать различные параметры \ изображения по умолчанию из каждой модели в модель изображения?
например, я хотел бы, чтобы изображение по умолчанию для профиля былоотличается от изображения по умолчанию для сообщения.позже я могу захотеть изменить размер, который я разрешаю для профиля, но не для поста и т. д. ...
Я попытался добавить параметр пути к методу init вмодель Image, но я не нашел способа передать этот параметр этому классу при присвоении ему атрибута.
Например:
image = models.OneToOneField(MyImage, related_name='image', some_default_init_param='default.pnd')
выдает ошибку и не передает этот kwargмодель MyImage.
Какой правильный способ сделать это?