अपलोड होने पर मैं अपनी एक छवि का नाम बदलने की कोशिश कर रहा हूं। मुझे यह काम करने के लिए प्रतीत नहीं होता है।

class Article(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    photo = models.ImageField(upload_to=photo_file_name, blank=True, null=True)
    created_at = models.DateTimeField(auto_now_add=True)
    title = models.CharField(max_length=255)
    description = models.TextField()
    url = models.CharField(max_length=255, blank=True, null=True)

    def __str__(self):
        return self.title

    def photo_file_name(self, filename):
        extension = filename.split('.')[-1]
        filename = 'cover_photo_{}.{}'.format(self.id, extension)
        return os.path.join('articles/media/articles/photos/coverphotos/', filename)

कोई भी जवाब मेरी मदद नहीं कर पाया है। मुझे एक नाम त्रुटि मिलती है: नाम 'photo_file_name' परिभाषित नहीं है। कोई भी सहायताकाफी प्रशंसनीय होगी। शुक्रिया!

0
Christopher Gunawan 25 अक्टूबर 2018, 07:26

2 जवाब

सबसे बढ़िया उत्तर

आप मॉडल में इसे जोड़ें,

import os
from uuid import uuid4
from django.utils.deconstruct import deconstructible


@deconstructible
class PathAndRename(object):
   def __init__(self, sub_path):
       self.path = sub_path

   def __call__(self, instance, filename):
       # add extension as per your requirement, I am using .png
       ext = "png"
       # set filename as random string
       filename = '{}.{}'.format(uuid4().hex, ext)
       # return the whole path to the file
       return os.path.join(self.path, filename)

class Article(models.Model):
    photo = models.ImageField(upload_to=PathAndRename('images/'), blank=True, null=True)

अपना फोटो फ़ाइल नाम फ़ंक्शन साफ़ करें। आप अपने सभी मॉडल में PathAndRename जोड़ सकते हैं।

0
Bidhan Majhi 25 अक्टूबर 2018, 11:26

हाय समारोह कक्षा का हिस्सा नहीं होना चाहिए

def photo_file_name(self, filename):
    extension = filename.split('.')[-1]
    filename = 'cover_photo_{}.{}'.format(self.id, extension)
    return os.path.join('articles/media/articles/photos/coverphotos/', filename)


class Article(models.Model):
   user = models.ForeignKey(User, on_delete=models.CASCADE)
   photo = models.ImageField(upload_to=photo_file_name, blank=True, null=True)
   created_at = models.DateTimeField(auto_now_add=True)
   title = models.CharField(max_length=255)
   description = models.TextField()
   url = models.CharField(max_length=255, blank=True, null=True)

   def __str__(self):
      return self.title
1
aman kumar 25 अक्टूबर 2018, 04:29