访问视图中ModelForm中重命名的图像名称



是否有任何选项可以获得由ModelForm在views.py中上传的新文件名?

我有这样的ModelForm。我想把用户上传的所有文件重命名为唯一的文件名,并遵循这个指南使用django?

models.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停止工作,因为在唯一的重命名之前,我一直在使用来自POST的文件名,但现在文件有其他唯一的名称!

views.py

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

forms.py

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

保存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...

最新更新