django Поле изображения ManyToMany с различными изображениями по умолчанию - PullRequest
0 голосов
/ 20 апреля 2019

У меня есть несколько моделей с атрибутом 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.

Какой правильный способ сделать это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...