将原始文件名设置为Django Model中的默认标题字段

时间:2018-07-03 21:39:02

标签: python django python-3.x django-models django-file-upload

我正在使用Django Admin网站管理我的上传。我想知道是否可以将原始文件名设置为Image类的默认标题。

Models.py:

$_ | Rename-Item -NewName ( $_.Name + ".pdf" )

我要上传图片,并且将标题字段保留为空白,而不是提供标题。然后,将Multimedia.titulo设置为原始上传文件名。我听说过预填充的字段,但不知道是否可能。预先感谢。

1 个答案:

答案 0 :(得分:0)

我在做类似的事情,我发现,如here所述,当您上传文件时,该文件存储在字典 request.FILE 中,该文件返回< strong> UploadedFile 对象。您可以通过访问文件的名称属性(request.FILE['YourModelImageField'].name)来获取文件的名称。

您可能会遇到这样的事情:

#model.py
class YourModel(models.Model):
    name = models.CharField(max_length=20)
    image = models.ImageField() # In this case we will have request.FILE['image'].name

#forms.py
class YourModelForm(ModelForm):
    class Meta:
        model = YourModel
        fields = ['image'] 

#views.py
def add_model(request):
    form = YourModelForm(request.POST, request.FILES)
    uploaded_file=request.FILES
    if form.is_valid():
       model_instance = form.save(commit=False)
       model_instance.name=uploaded_file['image'].name
       model_instance.save()
       return render(request, context={'form': form})

我并不是真正的django专家,所以如果有人看到错误或更好的解决方法,请告诉我。但这对我有用,我希望它能对您有所帮助。