Python 访问方法变量
我想从我的Python 访问方法变量,python,django,Python,Django,我想从我的create\u目录方法中访问gallery\u路径变量,作为我的gallery模型字段中的参数。这可能吗 class Category(models.Model): category_title = models.CharField(max_length=200) category_image = models.ImageField(upload_to="category") category_description = models.TextField()
create\u目录
方法中访问gallery\u路径
变量,作为我的gallery
模型字段中的参数。这可能吗
class Category(models.Model):
category_title = models.CharField(max_length=200)
category_image = models.ImageField(upload_to="category")
category_description = models.TextField()
slug = models.SlugField(max_length=200, unique=True, default=1)
gallery = models.ImageField(upload_to=gallery_path)
def create_directory(self):
global gallery_path
gallery_path = os.path.abspath(
os.path.join(settings.MEDIA_ROOT, self.slug))
if not os.path.isdir(gallery_path):
os.mkdir(gallery_path)
def save(self, *args, **kwargs):
if not self.pk:
self.create_directory()
super().save(*args, **kwargs)
def delete(self, *args, **kwargs):
shutil.rmtree(os.path.join(settings.MEDIA_ROOT, self.slug))
# os.rmdir(os.path.join(settings.MEDIA_ROOT, self.slug))
super().delete(*args, **kwargs)
class Meta:
verbose_name_plural = "Categories"
def __str__(self):
return self.category_title
感谢您的帮助以这种方式加载模型后,您不会影响图像上载路径。 模型是在应用程序启动时加载的,加载后您将尝试对其进行更改 但您可以将callable传递给参数“upload_to”,每次上传新文件时都会调用该参数:
class MyModel(models.Model):
# Need to be defined before the field
def get_image_path(self, filename):
gallery_path = os.path.abspath(
os.path.join(settings.MEDIA_ROOT, self.slug))
if not os.path.isdir(gallery_path):
os.mkdir(gallery_path)
return os.path.join(gallery_path, filename)
gallery = models.ImageField(upload_to=get_image_path)
文档:那么您当前的代码有什么问题?啊,我抓到你了。以这种方式加载模型后,不能影响图像上载路径。模型是在应用程序启动时加载的,加载后您将尝试对其进行更改。