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は状況を解決し、変化した状況を表示します。
このような状況でイメージフィールドに更新が表示されない理由を知っている人はいますか?
リターンリダイレクト()の作品を追加するが、私はなぜでしょうか?私は、profile_form内のすべてのデータを持っている必要があります、なぜそれは、POSTデータのないインスタンスとは異なったレンダリングですか?また、追加のhttp要求と追加のDB呼び出しです。 – djoek
モデルフォームの 'instance'引数は、オブジェクトへのフォームアクセスのみを与え、フォームが運ぶデータは定義しません。フォームに 'POST'データがあれば、それがフォームに表示されます。したがって、 "余分なリクエストとdbコール"が必要です.djangoのdocで、フォームの操作方法を確認してください:https://docs.djangoproject.com/en/1.10/topics/forms/#the-view –