0
フォームを使用してモデルエントリを更新したいとします。問題は、エントリを更新する代わりに、新しいエントリを作成することです。フォームを使用したDjangoアップデートモデルエントリが失敗する
def edit(request, c_id):
instance = get_object_or_404(C, id=int(c_id))
if request.POST:
form = CForm(request.POST, instance=instance)
if form.is_valid():
form.save()
return redirect('/a/b', c_id)
else:
form = CForm(instance=instance)
args = {}
args.update(csrf(request))
args['form'] = form
args['c_id'] = c_id
return render_to_response('a/b.html', args)
HTMLコード:
<form action="https://stackoverflow.com/a/edit/{{ c_id }}/" method="post">
{% csrf_token %}
{% for field in form %}
<div class="fieldWrapper">
{{ field.errors }}
{{ field.label_tag }} {{ field }}
{% if field.help_text %}
<p class="help">{{ field.help_text|safe }}</p>
{% endif %}
</div>
{% endfor %}
<input type="submit" value="Submit"/>
</form>
CFormクラスコード
class CForm(forms.ModelForm):
class Meta:
model = C
fields = ['name', 'code']
フォームをレンダリングするために使用しているHTMLであなたの質問を更新してください。 – Soviut
@Soviut @Soviut私はそれを更新しました – spoke
@Alasdair私は今CFormクラスを追加しました – spoke