如何将上传文件的名称添加到 Django 中的模型

How to add the name of an uploaded file to a model in django

我正在学习 Django。我被这个问题困住了。

我创建了一个表单,用户可以在其中上传文本文件并选择性别。用户还应该在文本框中写入文本文件的名称。

sample output

在后端,我想在模型中保存文本文件的名称和性别。这样做的目的是因为当多个用户将使用该应用程序时,我应该知道哪个用户选择了哪个性别,以便我可以产生所需的输出。

正如我已经提到的,用户需要输入文件名,我在想是否可以从上传的文件中获取文件名,然后将其保存到模型中,这样用户就不需要输入文件名,因此没有文本框。

这是我的 git 存储库的 link - https://github.com/AnshulGupta22/auto_generation.git

有人可以告诉我怎么做吗?正如我已经说过的,我是 django 的新手,我们将不胜感激。

您可以从 request.POST 中获取文件名,您可以为 file_name

创建一个对象
##in views.py  
def get_gender(request):
    if request.method == 'POST':
        form = GenderForm(request.POST)
        uploaded_file = request.FILES['document']
        file_name = request.FILES["name"] #NEW
        Gender.objects.create(file_name=file_name) #NEW
        fs = FileSystemStorage()
        name = fs.save(uploaded_file.name, uploaded_file)
        fbh = name[:-4]
        if form.is_valid():
            form.save()
            run(["gnome-terminal", "--", "sh", "-c", f"espeak -ven+m1 -f {uploaded_file.name} -w {fbh}.wav "])
            return  HttpResponse("Blog created")


##in models.py
class Gender(models.Model):
    file_name = models.CharField(max_length=120) #NEW