0
我使用django處理一個組項目。我有一個文件上傳的問題。這是一個網絡應用程序來創建,與一些額外的選項(圖表,圖表......)共享表格。我要指出,我是新來的Django(總初學者)django上傳文件(模型和表單)
1.models.py:
class Form(TimeStampedModel, TitleSlugDescriptionModel):
author = models.ForeignKey(User,
on_delete=models.CASCADE)
title = models.CharField(max_length=512)
is_final = models.BooleanField(default=False)
is_public = models.BooleanField(default=False)
is_result_public = models.BooleanField(default=False)
image = models.ImageField(upload_to="upload_location", null=True,
blank=True, width_field="width_field",
height_field="height_field")
height_field = models.IntegerField(default=0)
width_field = models.IntegerField(default=0)
file = models.FileField(upload_to="upload location", null=True,
blank=True)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('form-detail', kwargs={'slug': self.slug})
2. forms.py:
class DocumentUpload(forms.ModelForm):
class Meta:
model = Form
field = ["image", "file"]
3。當然,我做了一個遷移,改變了主要設置(網址,MEDIA_ROOT等)
4. views.py這是我的問題 我嘗試修改現有的「create_form(request)」函數。 在任何教程中,我們使用「form = form from form.py」,在我的項目中,我們使用「form = model from models.py」。我應該如何修改這個函數來完成這個上傳文件。
def create_form(request):
if request.method == 'POST':
user = request.user
data = ParseRequest(request.POST)
parsed_form = data.form()
parsed_questions = data.questions()
form = Form(request.FILES, author=user,
title=parsed_form['title'],
is_final=parsed_form['is_final'],
is_public=parsed_form['is_public'],
is_result_public=parsed_form['is_result_public'],
description=parsed_form['description'])
form.save()
for d in parsed_questions:
question = Question(request.FILES, form=form, question=d['question'])
question.save()
for opt in d['options']:
option = Option(question=question, option=opt)
option.save()
return render(request, 'forms/form_form.html', {})
我希望得到任何幫助,THX
1.什麼是「ParseRequest」? 2.您不需要再次初始化表格 – user3764893
不要將模型命名爲「表格」,否則會導致混淆。你顯然使用了一些第三方庫(看起來像django擴展),我不會推薦擁抱它們,直到你更好地理解django。 – e4c5
我同意@ e4c5,也在這裏我可以想到,request.FILES傳遞了兩次,所以請求的文件讀入'Form(request.FILES')不能再用於'Question(request.FILES,' – Swagat