python django 的多对多字段使用 CheckboxSelectMultiple 表单展示,判断当前值是否选中,,一个 order 有多个


一个 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 %}

编橙之家文章,

评论关闭