0
我正在嘗試生成一個包含許多地址(表單)的模板,您可以在其中添加,編輯和刪除它們。Django formsets問題
我在做一些與formset有關的錯誤嗎?下面是我的看法:
@login_required
def addresses(request):
AddressesFormset = modelformset_factory(Address,
can_delete = True,
extra = 0,
exclude = ['user'])
log.debug('Queryset: %s', request.user.addresses.all())
if request.method == 'POST':
log.debug('Formset from POST')
formset = AddressesFormset(request.POST)
if formset.is_valid():
log.debug('Saving form')
formset.save()
log.debug('Fromset from queryset')
formset = AddressesFormset(queryset = request.user.addresses.all())
else:
log.debug('Form is not valid')
else:
log.debug('Fromset from queryset')
formset = AddressesFormset(queryset = request.user.addresses.all())
return render_to_response('accounts/addresses.html', locals(), context_instance = RequestContext(request))
@login_required
def add_address(request):
address = Address.objects.create(user = request.user)
address.save()
return HttpResponseRedirect('/accounts/addresses/')
而且模板:
{{ formset.management_form }}
{% for form in formset.forms %}
<table class="accountT">
<tr class="accountTT">
<td><p>Ulica, nr domu, mieszkania:</p></td>
<td>{{ form.street.errors }}{{ form.street }}</td>
</tr>
<tr class="accountTT">
<td><p>Miejscowość:</p></td>
<td>{{ form.city.errors }}{{ form.city }}</td>
</tr>
<tr class="accountTT">
<td><p>Kod pocztowy:</p></td>
<td>{{ form.zipcode.errors }}{{ form.zipcode }}</td>
</tr>
<tr class="accountTT">
<td><p>Telefon kontaktowy:</p></td>
<td>{{ form.phone.errors }}{{ form.phone }}</td>
</tr>
<tr>
<td><p>Usuń:</p></td>
<td>{{ form.DELETE }}</td>
</tr>
{{ form.id }}
</table>
{% endfor %}
編輯: 的問題是,添加的形式我要保存表單集(在add_address())。我想看看你如何正確對待formset。我根本不明白;)。
在此先感謝, Etam。
我不是... 之前:formset = AddressesFormset(queryset = request.user.addresses.all()) 我這樣做:formset.save()。 沒有它你不能刪除表單:/。 – Etam 2010-04-15 20:20:43
是的,這就是我所說的。您保存它,然後立即創建一個新的表單集。爲什麼? – 2010-04-15 20:44:53
否則你不能從formset中刪除表單...我認爲我的理解框架集有些問題:(。 – Etam 2010-04-15 21:14:15