2017-08-10 56 views
0

得到的圖像我有一個包含這樣一個ImageField的模型:Django的距離的ModelForm

class MyModel(models.Model): 
    photo = models.ImageField() 

又像形式:

class MyModelForm(forms.ModelForm): 
    class Meta: 
     model = MyModel 
     fields = ['photo',] 

和在我看來:

def show_form(request): 
    form = MyModelForm(request.POST or None) 
    content = { 
     'form': form, 
    } 

    if form.is_valid(): 
     mymodel = form.save(commit=False) 
     mymodel.save() 

    return render(request, 'appname/template.html', content) 

和我的模板:

<!DOCTYPE html> 
<html> 
    <body> 
    <form action="" method="POST"> 
     {% csrf_token %} 
     <table align="center"> 
     {{ form.as_table }} 
     <tr> 
      <td> 
      <input type="submit" value="Submit" /> 
      </td> 
     </tr> 
     </table> 
    </form> 
    </body> 
</html> 

但是每當我選擇一張圖片並點擊提交,表格就會告訴我這個字段是必需的,並且不會保存它。

在此先感謝。

回答

1

您需要提供並在ImageField

photo = models.ImageField(upload_to='images') 

upload_to參數,使窗體像這樣

<form action="" method="POST" enctype="multipart/form-data"> 

,並確保你有MEDIA_URLMEDIA_ROOT定義

,改變你對此的看法

def show_form(request): 
    if request.method == 'POST': 
     form = MyModelForm(request.POST or None) 
     if form.is_valid(): 
      mymodel = form.save(commit=False) 
      mymodel.save() 
    else: 
     content = { 
     'form': form, 
     } 
     return render(request, 'appname/template.html', content) 
+0

可悲仍然是同樣的錯誤,我也沒有忘記遷移 – nicksheen

+0

你有沒有在設置文件中聲明MEDIA_ROOT和MEDIA_URL – Exprator

+0

是,'MEDIA_URL ='/ media /''和'MEDIA_ROOT = os.path.join(BASE_DIR ,'media')' – nicksheen