我不確定標題是否描述了我想要的內容。我想要的是實現這樣的事情:Django add/remove form without multiple submit。Django:從formset中獲取表單ID
但我沒有列出我有formset和窗體的項目。這個formset的形式確實包含了我可以用來創建鏈接的信息{%url'item_edit'item.id%}。問題是它是一個隱藏字段的值。在這裏(http://docs.djangoproject.com/en/dev/topics/forms/#looping-over-the-form-s-fields),您有一個選項列表如何使用模板中的表單字段,但沒有一個是{{field.value}}。如果我嘗試過,那就只是失敗了。
無論如何。到代碼。我所擁有的模板是:
<form enctype="multipart/form-data" method="post" action="/list/edit/{{ list.id }}/">
<table>
{{ form.as_table }}
{{ formset.management_form }}
{% for form in formset.forms %}
{% if forloop.first %}
<tr>
{% for field in form.visible_fields %}
<td>{{ field.label }}</td>
{% endfor %}
</tr>
{% endif %}
<tr>
{% for field in form.visible_fields %}
{% if not forloop.last %}
<td>{{ field }}</td>
{% else %}
<td>{{ field }}
{% endif %}
{% endfor %}
{% for field in form.hidden_fields %}
{% if not forloop.last %}
{{ field }}
{% else %}
{{ field }}</td>
{% endif %}
{% endfor %}
</tr>
{% endfor %}
<tr><td><input type="submit" value="Submit"></td><td colspan="4"> </td></tr>
</table>
</form>
而這給了我直列形式行是這樣的:
<tr>
<td><input type="text" maxlength="200" value="test2" name="shoppinglistitem_set-0-itemname" id="id_shoppinglistitem_set-0-itemname"/></td>
<td><input type="text" maxlength="200" value="http://www.xxx.ee" name="shoppinglistitem_set-0-link" id="id_shoppinglistitem_set-0-link"/></td>
<td><input type="text" maxlength="100" value="eepöäsdöäfsdfd" name="shoppinglistitem_set-0-store" id="id_shoppinglistitem_set-0-store"/></td>
<td><input type="text" id="id_shoppinglistitem_set-0-price" value="22134" name="shoppinglistitem_set-0-price"/></td>
<td><input type="checkbox" id="id_shoppinglistitem_set-0-DELETE" name="shoppinglistitem_set-0-DELETE"/><input type="hidden" id="id_shoppinglistitem_set-0-list" value="1" name="shoppinglistitem_set-0-list"/><input type="hidden" id="id_shoppinglistitem_set-0-listitem_ptr" value="5" name="shoppinglistitem_set-0-listitem_ptr"/></td>
</tr>
,我尋找一些方式來增加這樣
<a href={% url 'remove_list_item' item.id %}>REmove</a>
鏈接或者只是
<a href="http://localhost/list/removeitem/{{ id }}">REmove</a>
Urlcon f對於這種觀點是:
url(r'^removeitem/(?P<lisitem_id>\d+)/$', 'remove_list_item', name='remove_list_item')
那麼是否有一些簡單的方法從窗體中獲取該項目(對象)的ID?我是否必須爲該刪除鏈接創建某種小部件?
Alan。
謝謝!我最終會使用ajax刪除行,我只想知道是否有easyer方法來獲取對象的id,因爲我不想爲此編寫javascript。{{form.initial.id}}工作得很好! 整個想法是讓這種形式可以使用JavaScript和不使用JavaScript。我想擺脫ajax的IE(6)用戶,所以他們將有更多的理由升級:) 在這裏寫關於CSRF讓我看起來跆拳道它是。謝謝 :)。我現在會閱讀更多關於此的內容。 – 2009-09-12 12:32:41
我很確定{{form.instance.pk}}有效,並且是一種更「適當」的方式。 (現在無法直接驗證,所以對不起,如果我記錯的話) – 2009-09-12 23:08:43
Béres - 如果表單的實例對象尚未保存(您使用的是「創建」表單而不是更新表單),那麼這會贏得'工作。另外,實例PK *不是*形式相同ID – Patrick 2014-10-26 12:18:40