尝试使用 pythons union 运算符构建您的查询集 -
class PrimaryCategoryForm(forms.ModelForm):
set_1 = PrimaryAdCategoryType.objects.filter(pk=2)
set_2 = PrimaryAdCategoryType.objects.filter(pk=3)
qs = set_1 | set_2
primarycategorytype = forms.ModelMultipleChoiceField(queryset=qs,
required=True,
widget=forms.CheckboxSelectMultiple)
|
操作员正在创建一个新集合,其中包含来自 的所有项目和来自 的所有set_1
项目set_2
。
更新
虽然上述方法将支持创建复杂的集合。如果你只是想挑几个pk的话,Martin在评论中的建议可能就足够了——
class PrimaryCategoryForm(forms.ModelForm):
qs=PrimaryAdCategoryType.objects.filter(pk__in=[2,3])
primarycategorytype = forms.ModelMultipleChoiceField(queryset=qs,
required=True,
widget=forms.CheckboxSelectMultiple)
可编辑的复选框
我认为在使复选框可编辑和预选时,您可能需要使用 javascript。也许将数据属性添加到小部件,然后创建一个基于数据属性操作复选框的 jquery 函数。就像是 -
attrs = {'data-selected-value': 2, 'data-readonly-value': 2}
primarycateogrytype = forms.ModelMultipleChoiceField(attrs=attrs)
然后在javascript中 -
var readonlyCheckboxValue = $('#your_mulliplecheckboxselect).data('selected-value');
var $readonlyCheckbox = $('#your_multiplecheckboxselect .input[value=readonlyCheckboxValue]');
$readonlyCheckbox.attr('readonly', true);
我没有测试过这段代码,但它应该让你了解我的建议。如果您还没有遇到过数据属性,请查看它 - 它非常棒。