基于模型选择动态设置默认图像 - Django

时间:2021-03-16 16:32:54

标签: python django

假设我有一堂课:

imageModel(models.Model):
    O1 = 'Option1'
    O2 = 'Option2'

    CHOICES = (
        (O1, 'Option1'),
        (O2, 'Option2'),
    )

    options = models.CharField(max_length=50, choices=CHOICES)
    image = models.ImageField()

如何根据选项选择动态设置图像字段的默认值?

我尝试了类似的东西:

imageModel(models.Model):
    O1 = 'Option1'
    O2 = 'Option2'

    CHOICES = (
        (O1, 'Option1'),
        (O2, 'Option2'),
    )

    options = models.CharField(max_length=50, choices=CHOICES)
    image = models.ImageField()

    def get_default_image(self):

       super().save()
       img = Image.open(self.company_logo.path)
       if self.options == "Option1":
          img.default = "/static/img/option1img.jpg"
       elif self.options == "Option2":
          img.default = "/static/img/option2img.jpg"
        img.save(self.image.path)

但这没有用。

1 个答案:

答案 0 :(得分:0)

图片好像是静态的,只有两张图片,可能有很多记录只有这两张可能的图片。

我建议你做如下事情

imageModel(models.Model):
    O1 = 'Option1'
    O2 = 'Option2'

    CHOICES = (
        (O1, 'Option1'),
        (O2, 'Option2'),
    )

    options = models.CharField(max_length=50, choices=CHOICES)

如果代码在 admin.py

from django.utils.safestring import mark_safe

    @classmethod
    def thumbnail(self, obj):
        if obj.options == "option1":
            return mark_safe(
                '<img src="/static/img/option1img.jpg" width="75" height="auto" >'
            )
        else:
            return mark_safe(
                '<img src="/static/img/option2img.jpg" width="75" height="75" >'
            )