私はフォームセットを持っており、私はそれを元に戻そうとしています。しかし、formset.is_valid()をチェックして保存しようとすると、formsetの何も変更されていなくても常に検証が失敗します。私はformsetを使って既に存在するデータを表示していて、それを編集しようとしています。私はどこが間違っているのか分かりません。誰かが助けてくれますか? :(Djangoフォームセットが保存されていません
views.py
def product(request, product_id):
product = get_object_or_404(Product, pk=product_id)
productform = ProductForm(instance=product)
itemformset = modelformset_factory(Item, form = ItemForm, extra=0)
items = itemformset(queryset = Item.objects.filter(Product=product_id), prefix='items',)
if request.method == 'POST':
productform = ProductForm(request.POST, instance=product)
items = itemformset(request.POST, queryset = Item.objects.filter(Product=product_id), prefix='items',)
if productform.is_valid():
productform.save()
if items.is_valid():
items.save()
else:
print("fail")
context = {
'productform':productform,
'product_id': product_id,
'items':items,
}
return render(request, 'product.html', context)
.htmlを
{% bootstrap_form productform %}
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#Items"> Items List </a>
</h4>
</div>
<div id="Items" class="panel-collapse collapse">
<table class="table table-bordered">
<thead>
<tr>
<th>Name</th>
<th>Tag</th>
</tr>
<thead>
<tbody>
{{ items.management_form }}
{% for form in items %}
<tr>
{{ form.id}}
<td> {{ form.Name }} </td>
<td> {{ form.Tag }} </td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
あなたは 'ItemForm'を表示していませんが、あなたは' product'フィールドを除外するのを忘れているかもしれません。 1つの製品に関連するすべての項目を編集したいので、おそらく[inlineformset_factory'](https://docs.djangoproject.com/en/1.9/topics/forms/modelforms/#inline-formsets)有用。 – Alasdair