2017-01-06 1 views
0
# models.py 
class Profile(models.Model): 
    name = models.CharField(max_length=255) 
    image = models.ImageField(upload_to=image_path, blank=True, null=True) 

# forms.py 
class ProfileForm(ModelForm): 
    class Meta: 
     model = Profile 
     fields = '__all__' 

# views.py 
def profile(request, id): 
    p = get_object_or_404(Profile, pk=id) 
    profile_form = ProfileForm(request.POST or None, 
           files=request.FILES or None, 
           instance=p) 

    if request.method == 'POST': 
     if profile_form.is_valid(): 
      profile_form.save() 

    return render(request, 'profile.html', {'form': profile_form}) 

#profile.html 
<form method="post" action="" enctype="multipart/form-data" > 
    {% csrf_token %} 
    {{ form }} 
    <input type="submit" value="Submit" /> 
</form> 

を変更しているとき、ImageFieldsが不足している、彼らは画像を含むすべての値が、(があらかじめ入力フォームを取得(ある場合)ジャンゴ1.10:更新後のModelFormをレンダリングする場合、ユーザーを取得/プロファイル/ 1と1が存在する場合、それらは

ユーザーは、イメージを消去(変更または変更)以外のフィールドにPOSTすると、更新後に正しくレンダリングされます。

ただし、ユーザーがイメージを変更(クリアまたは変更)した場合、変更はレンダリング結果に反映されません。イメージは常に空として表示されます。迅速なGETは状況を解決し、変化した状況を表示します。

このような状況でイメージフィールドに更新が表示されない理由を知っている人はいますか?

答えて

0

プロファイルフォームが正常に保存されたときに何らかのリダイレクトを行う必要はありません(明らかにGET)。あなたはいつもrender....を返していました。POSTリクエストをお持ちの場合は、フォームはPOSTのデータにとどまります。だからそれはする必要があります:

# views.py 
def profile(request, id): 
    p = get_object_or_404(Profile, pk=id) 
    profile_form = ProfileForm(request.POST or None, files=request.FILES or None, instance=q) 

    if request.method == 'POST': 
     if profile_form.is_valid(): 
      profile_form.save() 
      # do the GET request to some page 
      return redirect('some-view-name', foo='bar') 

    return render(request, 'profile.html', {'form': profile_form}) 
+0

リターンリダイレクト()の作品を追加するが、私はなぜでしょうか?私は、profile_form内のすべてのデータを持っている必要があります、なぜそれは、POSTデータのないインスタンスとは異なったレンダリングですか?また、追加のhttp要求と追加のDB呼び出しです。 – djoek

+0

モデルフォームの 'instance'引数は、オブジェクトへのフォームアクセスのみを与え、フォームが運ぶデータは定義しません。フォームに 'POST'データがあれば、それがフォームに表示されます。したがって、 "余分なリクエストとdbコール"が必要です.djangoのdocで、フォームの操作方法を確認してください:https://docs.djangoproject.com/en/1.10/topics/forms/#the-view –

関連する問題