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 %}
テンプレートをご提示ください。 –
あなたは行く!私は 'form_team.photo = form_team.cleaned_data ['photo']'を実行しようとしました。しかし、これはすべてのImageFieldでそれを行うことです。それを動作させるためのより短い方法はありますか? – bow