Django 复选框仅想勾选部分项目列表
又是一个关于复选框的问题。我有一个列表,列表里的每个项目都有一个复选框。我想做的是把所有属于某个子集的项目都勾选上。这个子集是通过 items = client.storageitem_set.all()
获取的,而子集的具体内容是 items = models.StorageItem.objects.filter(orderstoragelist__order__pk = order.pk)
。这个是在另一个视图函数 edit_order 中定义的。
在 views.edit_order 中,有一个团队的子集列表。我现在要去 views.client_items 这个地方,希望能把所有子集中的项目在复选框中都勾选上。目前的代码只会勾选第一个项目。我不想这样了,我想勾选这个子集中的所有项目。
def client_items(request, client_id = 0):
client = None
items = None
try:
client = models.Client.objects.get(pk = client_id)
items = client.storageitem_set.all()
except:
return HttpResponse(reverse(return_clients))
return render_to_response('items.html', {'items':items, 'client':client}, context_instance = RequestContext(request)) # Redirect after POST
{% for item in items %}
<tr class="items_table_row">
<td><input type="checkbox" name="{{item.pk}}" value="{{item.pk}}" "{% ifequal forloop.counter 1 %} checked="checked"{% endifequal %}>
<td>{{item.tiptop_id}}</td><td>{{item.alternative_id}}</td><td>{{item.title}}</td><td>{{item.type}}</td><td>{{item.format}}</td>
<td><span id="{{item.pk}}" name="type">{{item.itemstatushistory_set.latest}}</span></td><td>{{item.itemstatushistory_set.latest.date.date|date:"d M Y"}}</td>
<td><a href="{% url tiptop.views.edit_item item.client.pk item.pk %}" onclick="return showAddAnotherPopup(this);">Edit</a></td>
</tr>
{% endfor %}
1 个回答
0
这可能会有帮助,虽然我之前没做过。假设你有一个模型 M
,你只需要用你需要的数据和选项来渲染它的形式,然后应用到一个子集上。
# Model
class M(models.Model):
status = models.BooleanField() # this will be our checkbox
# your stuffs
# Model's form
class MForm(ModelForm):
class Meta:
model = M
widgets = {
'status': CheckboxInput(attrs = {'checked': 'checked'}),
}
Sultan