从视图中的模型窗体访问重命名的图像名称?

2024-10-03 15:28:59 发布

您现在位置:Python中文网/ 问答频道 /正文

在views.py中有没有任何选项可以让ModelForm上传新的文件名

我有这样的模型。我想将用户上传的所有文件重命名为唯一名称并遵循此指南Enforce unique upload file names using django?

型号.py

class SomePhotos(models.Model):

    def get_file_path(instance, filename):
        ext = filename.split('.')[-1]
        filename = "%s.%s" % (uuid.uuid4(), ext)
        return os.path.join('some_photos/', filename)

    image = models.ImageField(upload_to = get_file_path)
    link = models.URLField(verbose_name = u'URI', null = True, blank = True)
    title_color = RGBColorField()

这是伟大的作品-文件被保存为唯一的名称到正确的目录,但我的功能在vievs.py停止工作,因为在唯一重命名之前,我一直在使用文件名从后,但现在文件有其他,唯一的名称

视图.py

filename = request.FILES['image'].name

表单.py

class MotivatorForm(ModelForm):
     class Meta:
        model = SomePhotos

Tags: 文件pathpy名称get文件名modelsfilename
1条回答
网友
1楼 · 发布于 2024-10-03 15:28:59

保存ModelForm后,可以使用实例的.image.path获取文件路径

def myview(request):
    if request.method == "POST":
        form = MotivatorForm(request.POST, request.FILE)
        if form.is_valid():
            instance = form.save()
            filepath = instance.image.path
    # etc...

相关问题 更多 >