2012-11-11 128 views
0

我在我的模板中有一個列表。對於列表中的每個項目,我有一個包含複選框的{{modelform}}。我可以檢查該框,並且應該更新。問題是,當我選中一個項目的框並提交時,它會提交所有複選框,因爲它們在每個實例中都是相同的。有沒有辦法爲列表中的每個項目設置唯一的複選框實例?模型的多個實例

當前各的ModelForm複選框呈現同樣是這樣的:

<input name="is_solution" type="checkbox" class="is_solution" id="is_solution"> 

我也使用

test = request.POST.get('checkbox') 

test = request.POST.get('checkbox') 

想,用這個我也許能張貼嘗試在我看來的更新。我想我對這一切都是錯誤的,我迷路了。從本質上講,我希望在列表上有一個複選框,就像stackexchange中的一樣,您可以在其中確認答案。有什麼建議麼?

回答

1

你必須使用窗體的前綴一樣(只是一些獨特的爲每個表單對象)的觀點:

def foo(request, ...): 
    objs = Model.objects.filter(...) 
    forms = [] 
    for i, obj in enumerate(objs): 
     form = ModelForm(instance=obj, prefix=str(i)) 
     forms.append(form) 
    ... 

這將確保每種形式都有唯一的標識符,因此,您將能夠提交具體形成。

而且你可以像渲染照例在模板:

<form ...> 
{% csrf_token %} 
{% for form in forms %} 
    {{ form }} 
{% endfor %} 
</form> 
相關問題