如何将上传文件的名称添加到 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
我正在学习 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