2011-11-13 11 views
1

2つのDjangoフォームを含む1つのHTMLページがあります。すべて同じ<form>..</form>タグ内にあります。複数のファイルをアップロードしようとする場合を除いて、すべてがうまくいきます。Django複数ファイルのアップロードに失敗する

各フォームには独自のイメージがあり、何らかの理由で最初のフォームからのみイメージを保存できます。 2番目のフォームの他のデータはまだ保存されますが、イメージはありません。エラーや例外が発生することはありませんので、何がうまくいかないのか分かりません。

ここでは私のviews.pyは、私が間違って何をやっている

def display_form(request): 
if request.method == 'POST': 
    form_team = TeamForm(request.POST, request.FILES, prefix="team") 
    form_player = PlayerForm(request.POST, request.FILES, prefix="play") 
    #form_ketua = KetuaForm(request.POST, request.FILES, prefix="ketua") 

    if all([form.is_valid() for form in [form_team, form_player]]): 
     # save Team data first, overwrite if exists 
     try: 
      team = Team.objects.get(kota=form_Team.cleaned_data['name']) 
      team.profil = form_Team.cleaned_data['profil'] 
      team.save() 
     except Team.DoesNotExist: 
      team = Team(**form_Team.cleaned_data) 
      team.save() 

     play = form_Player.save(commit=False) 
     play.name = team 
     play.save() 

else: 
    form_team = TeamForm(prefix="team") 
    form_player = PlayerForm(prefix="play") 
    #form_ketua = KetuaForm(prefix="ketua") 
    print "a" 

# list with tuple (form, legend) to pass as context 
forms = [(form_Team, 'Team Data'), 
     (form_Player, 'Player Profile'), 
     ] 

return render_to_response(
    'form/team.html', 
    { 
     'formlist': forms, 
    }, 
) 

ですか?

EDITは:ここでは、不足しているよう

{% extends "base.html" %} 

{% block title %}Form - {{ title }}{% endblock %} 

{% block content %} 
<form action="." method="POST" enctype="multipart/form-data">{% csrf_token %} 
{% for formitem in formlist %} 
    {% if formitem.1 %} 
    <fieldset> 
     <legend>{{ formitem.1 }}</legend> 
    {% endif %} 
    {{ formitem.0.non_field_errors }} 
    {% for field in formitem.0.visible_fields %} 
     <div class="formfield"> 
     {{ field.errors }} 
     {{ field.label_tag }} {{ field }} 
    </div> 
    {% endfor %} 
    {% if formitem.1 %} 
    </fieldset> 
    {% endif %} 
{% endfor %} 
<div id="formbuttons"> 
    <input type="submit" value="Submit" class="button"> 
    <input type="reset" value="Reset" class="button"> 
</div> 
</form> 
{% endblock %} 
+0

テンプレートをご提示ください。 –

+0

あなたは行く!私は 'form_team.photo = form_team.cleaned_data ['photo']'を実行しようとしました。しかし、これはすべてのImageFieldでそれを行うことです。それを動作させるためのより短い方法はありますか? – bow

答えて

0

に見える私のテンプレートですplay.save()(あなたがcommit=Falseでフォームを保存)

+0

ああ、私はここに貼り付けるのを忘れました。実際のフォームは.save()を持っていますが、私が言ったように、Playerはその画像以外のすべてのデータフィールドを保存します。 – bow

関連する問題