2017-06-12 85 views
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

+0

1.什麼是「ParseRequest」? 2.您不需要再次初始化表格 – user3764893

+1

不要將模型命名爲「表格」,否則會導致混淆。你顯然使用了一些第三方庫(看起來像django擴展),我不會推薦擁抱它們,直到你更好地理解django。 – e4c5

+0

我同意@ e4c5,也在這裏我可以想到,request.FILES傳遞了兩次,所以請求的文件讀入'Form(request.FILES')不能再用於'Question(request.FILES,' – Swagat

回答

0

我需要從forms.py使用的一種形式和手動添加附加字段。 Thx