一个 order 有多个 project,展示 order 的时候将 project 以 <input type="checkbox">
的形式展示出来,进入某个 order 页面时,需要把这个 order 的 project 以 checkbox 的形式展示出来,不知道应该如何判断 project 在 order 里?(见文末的 start.html
文件)
models.py
class Project(models.Model):
name = models.CharField(max_length=64, verbose_name='名称')
description = models.CharField(max_length=256, blank=True, verbose_name='描述')
class Order(models.Model):
project = models.ManyToManyField(Project, verbose_name='项目')
forms.py
class OrderForm(forms.Form):
project = forms.ModelMultipleChoiceField(label='项目',
widget=forms.CheckboxSelectMultiple,
queryset=Project.objects.filter(enable=True))
views.py
def order_start(request, order_id):
order = get_object_or_404(Order, pk=order_id)
form = OrderForm(request.POST)
if form.is_valid():
...
order.save()
else:
form = OrderForm()
return render(request, 'orders/start.html', {'form': form, 'order': order})
start.html
{% for p in form.project %}
<label for="{{ p.id_for_label }}">
<input type="checkbox" name="{{ p.name }}" id="{{ p.id_for_label }}"
value="{{ p.choice_value }}"
{% if ???这里该如何判断呢??? %}checked{% endif %}
>
<p>{{ p.choice_label }}</p>
</label>
{% endfor %}