フォームを送信すると(フォームに1つ以上のフォームが入力された場合) - FormSetは1つのフォームのみのデータを保存し、残りのデータは消えます...FormSetは1つのフォームのデータのみを保存します
マイテンプレート:
<div id="data">
<form method="post" action="/lookup/" id="test_data">{% csrf_token %}
{{ formset.management_form }}
{% for form in formset %}
<section id="test_data_row">
{{ form }}
</section>
{% endfor %}
</form>
</div>
<div class="bt">
<button type="submit" class="btn btn-default" id="submit_form" form="test_data">Submit</button>
<button type="button" class="btn btn-default" id="add" value="Add row"/>Add row</button>
</div>
マイforms.py:
class LookupForm(forms.ModelForm):
class Meta:
model = look
exclude =()
LookupFormSet = formset_factory(LookupForm, can_delete=True)
マイモデル
class look(models.Model):
class Meta():
db_table = 'lookup'
id_device = models.CharField(max_length=75)
phone_number = models.CharField(max_length=100)
phone_number_country = models.CharField(max_length=1000)
text = models.CharField(max_length=1000, default=None)
私のviews.py:
def manage_articles(request):
LookupFormSet = modelformset_factory(model=look, exclude=())
if request.method == "POST":
formset = LookupFormSet(
request.POST, request.FILES,
queryset=look.objects.none(),
)
if formset.is_valid():
for form in formset:
form.save()
return HttpResponseRedirect('/')
else:
formset = LookupFormSet(queryset=look.objects.none())
return render(request, 'req/lookup.html', {'formset': formset})
私のJS(JSのための新しいフォームを追加します):
document.getElementById('add').onclick = duplicate;
var i = 0;
var original = document.getElementById('test_data');
function duplicate() {
var clone = original.cloneNode(true); // "deep" clone
clone.id = "test_data" + ++i; // there can only be one element with an ID
original.parentNode.appendChild(clone);
}
'formset_factory'ではなく、' 'modelformset_factory'(https://docs.djangoproject.com/en/1.10/ref/forms/models/#modelformset-factory)を使用してください。 – Alasdair
@Alasdair、私はから私のコード を変更した場合 - 'LookupFormSet = formset_factory(LookupForm)' へ:DBテーブルから 'LookupFormSet = modelformset_factory(モデル=見て、(=除外))' すべてのデータであり、私のページに表示されます:http://take.ms/PRZl5と私はなぜか分からないのですか? –
あなたのコメントの半分が見当たりません - コードを変更するとどうなりますか? – Alasdair