дать уникальные имена для изображений, загруженных через imagefield django - PullRequest
0 голосов
/ 06 мая 2018

У меня есть форма с полем изображения в ней, и я хочу дать изображениям уникальные имена, чтобы избежать перезаписи. Как я могу добиться этого?

models.py

class Payment(models.Model):
    Address = models.CharField(max_length=255)
    Payment_ID = models.ImageField(upload_to='pay_proof/')
    Status = models.CharField(max_length=5, default="X")
    Review_result = models.CharField(max_length=255, default="Not yet reviewed")
    created = models.DateTimeField(auto_now_add=True)

    class Meta:
        ordering = ['-created']

        def __unicode__(self):
            return u'%s'% self.Status

    def __str__(self):
        return self.Status

1 Ответ

0 голосов
/ 06 мая 2018

Переопределите метод save и дайте любое имя, которое вы хотите дать своему файлу изображения.

def uniqueimage(name):
    image_name = "Logic to uniquely name the image"
    return image_name

class Payment(models.Model):
    Address = models.CharField(max_length=255)
    Payment_ID = models.ImageField(upload_to='pay_proof/')
    Status = models.CharField(max_length=5, default="X")
    Review_result = models.CharField(max_length=255, default="Not yet reviewed")
    created = models.DateTimeField(auto_now_add=True)

    def save(self, *args, **kargs):
        if self.Payment_ID:
            self.Payment_ID.name = uniqueimage(str(self.Payment_ID.name))
        super(Payment, self).save(*args, **kwargs)

ПРИМЕЧАНИЕ: Помните, что это не будет работать, если вы напрямую обновите поле методом .update.

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